Systems, methods, and storage media for analyzing authentication and authorization requirements in an identity infrastructure

ABSTRACT

Systems, methods, and storage media for analyzing authentication and authorization requirements in an identity infrastructure are disclosed. Exemplary implementations may: intercept, at a server, a first request to access an application in the identity infrastructure; transmit, from the server, one or more of the first request and a modified version of the first request to the application; intercept, at the server, a response from the application, based at least in part on the transmission; and display, via at least one interface, an analysis of one or more of the first request, the modified version of the first request, and the response, wherein the analysis comprising determining requirements for application authentication and authorization requirements, identity protocol(s) and/or techniques utilized by the application, whether user-defined security requirements have been implemented, and/or whether application meets predetermined compliance standards.

CROSS-REFERENCE TO RELATED APPLICATIONS

The present Application for Patent claims priority to U.S. ProvisionalApplication No. 63/354,291 entitled “Systems, Methods, and Storage Mediafor Analyzing Authentication and Authorization Requirements in anIdentity Infrastructure,” filed Jun. 22, 2022, assigned to assigneehereof, the contents of which are incorporated herein by reference intheir entirety and for all proper purposes. The present Application forPatent is also related to U.S. application Ser. Nos. 17/345,470,17/344,585, 17/341,597, 17/329,107, 17/317,156, and 17/217,422, assignedto the assignee hereof, the contents of which are incorporated herein byreference in their entirety and for all proper purposes.

FIELD OF THE DISCLOSURE

The present disclosure relates to systems, methods, and storage mediafor analyzing authentication and authorization requirements in anidentity infrastructure.

BACKGROUND

Legacy web applications are often poorly-understood by the applicationowners who have been tasked with their maintenance and care. This isparticularly true when they are coupled with legacy identity and accessmanagement (IAM) systems responsible for propagating user informationinto the application. In some circumstances, the process to migrate theapplication's identity system to a new IAM system (e.g., an IAM systemsupporting standard identity protocol(s), multi-factor authentication,etc.) can be manual and labor-intensive.

The description provided in the background section should not be assumedto be prior art merely because it is mentioned in or associated with thebackground section. The background section may include information thatdescribes one or more aspects of the subject technology.

SUMMARY

The following presents a simplified summary relating to one or moreaspects and/or embodiments disclosed herein. As such, the followingsummary should not be considered an extensive overview relating to allcontemplated aspects and/or embodiments, nor should the followingsummary be regarded to identify key or critical elements relating to allcontemplated aspects and/or embodiments or to delineate the scopeassociated with any particular aspect and/or embodiment. Accordingly,the following summary has the sole purpose to present certain conceptsrelating to one or more aspects and/or embodiments relating to themechanisms disclosed herein in a simplified form to precede the detaileddescription presented below.

Broadly, aspects of the present disclosure are directed to a system(e.g., shown as system 100 in FIG. 1 ) that helps in discovering andanalyzing the independent dependencies (e.g., custom hypertext transferprotocol (HTTP) headers and HTTP request cookies, to name twonon-limiting examples) of a legacy application to facilitate identitymigration and modernization, while minimizing or reducing updates to theapplication. In some aspects, discovering the HTTP request values thatthe legacy application currently expects may help enable modernauthentication/authorization practices to be layered in. Furthermore,adding modern authentication and authorization may help enhance thesecurity of legacy applications without forcing a complete applicationrewrite, as described in further detail below.

In some examples, the system of the present disclosure is configured tocapture application related traffic. Some non-limiting examples ofapplication related traffic may include application requests to an appand/or application responses from an app. In some cases, the system isconfigured to transform the captured application traffic (e.g.,application request or response) into a format suitable for analysis andconsumption by an end-user (e.g., a discovery module user associatedwith UE 405-a in FIG. 4A). The system may also analyze one or moreauthentication requirements and/or authorization requirements foraccessing the application. Additionally, or alternatively, the systemanalyzes attribute-loading requirements (e.g., for user attributes, suchas email address, phone number, residential address, job title,department, employee ID, etc.). In some instances, user attributes sentin non-standard HTTP headers can be used to identify a user to theapplication. These attributes may be stored in data stores such aslightweight directory access protocol (LDAP) and/or relationaldatabases. In accordance with aspects of the disclosure, the discoverymodule can make inferences about the source data store based on the nameand/or values of the user attributes. Additionally, as part of theattribute detection analysis process, the discovery module may determinewhich attributes (e.g., user attributes) a given application (or app)depends on. In some cases, the system validates access control behavioragainst compliance and regulatory standards. Further, the systemprovides an analysis of the output, for instance, in a visual form usinga graphical user interface (GUI) on a user device. In other cases, thesystem provides an analysis of the output via an application programminginterface (API).

One aspect of the present disclosure relates to a system configured foranalyzing authentication and authorization requirements in an identityinfrastructure. The system may include one or more hardware processorsconfigured by machine-readable instructions. The processor(s) may beconfigured to intercept, at a server, a first request to access anapplication in the identity infrastructure, where the first request isreceived from a first user device; transmit, from the server, one ormore of the first request and a modified version of the first request toaccess the application; intercept at the server, a response from theapplication, based at least in part on the transmission; display, via atleast one interface, an analysis of one or more of the first request,the modified version of the first request, and the response, where theanalysis may include determining at least one of requirements forapplication authentication and authorization, one or more identityprotocols utilized by the application, one or more identity techniquesutilized by the application, whether application meets predeterminedcompliance standards, and whether any user-defined security requirementshave been implemented.

In some implementations of the system, the one or more hardwareprocessors are further configured by machine-readable instructions tocapture a second request to access the application, wherein the secondrequest comprises the modified version of the first request and includesone or more identity dependencies received from an identity and accessmanagement system. In some implementations of the system, thetransmission comprises transmitting the second request to theapplication.

One aspect of the present disclosure relates to a method for analyzingauthentication and authorization requirements in an identityinfrastructure, where the method includes intercepting, at a server, afirst request to access an application in the identity infrastructure,where the first request is received from a first user device;transmitting, from the server, one or more of the first request and amodified version of the first request to access the application;intercepting, at the server, a response from the application, based atleast in part on the transmission; displaying, via at least oneinterface, an analysis of one or more of the first request, the modifiedversion of the first request, and the response, where the analysis mayinclude determining at least one of requirements for applicationauthentication and authorization, one or more identity protocolsutilized by the application, one or more identity techniques utilized bythe application, whether application meets predetermined compliancestandards, and whether any user-defined security requirements have beenimplemented.

In some implementations of the method, the method further includescapturing a second request to access the application, wherein the secondrequest comprises the modified version of the first request and includesone or more identity dependencies received from an identity and accessmanagement system. In some implementations of the method, thetransmitting comprises transmitting the second request to theapplication. In some implementations of the method, intercepting theresponse comprises intercepting the response from one of the IAM systemor the application.

In some implementations of the method, at least one of the identitydependencies and the requirements for authentication and authorizationmay include one or more differences between the second request and thefirst request. In some implementations of the method, the one or moredifferences between the second request and the first request include atleast one of addition of the custom HTTP headers, addition of the customcookies, and modification of one or more attributes in one or more ofthe first request and the second request.

In some implementations of the method, the HTTP headers may includestatus codes, redirect locations, query parameters, and one or morecustom HTTP headers.

One aspect of the present disclosure relates to a non-transientcomputer-readable storage medium having instructions embodied thereon,the instructions being executable by one or more processors to perform amethod for analyzing authentication and authorization requirements in anidentity infrastructure, where the method includes intercepting, at aserver, a first request to access an application in the identityinfrastructure, where the first request is received from a first userdevice; transmitting, from the server, one or more of the first requestand a modified version of the first request to access the application;intercepting, at the server, a response from the application, based atleast in part on the transmission; displaying, via at least oneinterface, an analysis of one or more of the first request, the modifiedversion of the first request, and the response, where the analysis mayinclude determining at least one of requirements for applicationauthentication and authorization, one or more identity protocolsutilized by the application, one or more identity techniques utilized bythe application, whether application meets predetermined compliancestandards, and whether any user-defined security requirements have beenimplemented.

In some implementations of the system, method, and non-transientcomputer-readable storage medium described herein, the custom HTTPheaders further comprise one or more application user attributes for oneor more users, wherein the one or more application user attributes areselected from a group consisting of a first name, a last name, an emailaddress, group membership information, a role, a title, and a username.In some implementations of the system, method, and non-transientcomputer-readable storage medium described herein, the custom HTTPcookies comprise at least one of a username and a group.

In some implementations of the system, method, and non-transientcomputer-readable storage medium described herein, the one or moreidentity protocols and identity techniques utilized by the applicationcomprise one or more of Security Assertion Markup Language (SAML),OpenID Connect (OIDC), Kerberos, and header-based authentication. Insome implementations of the system, method, and non-transientcomputer-readable storage medium described herein, the predeterminedcompliance standards comprise at least one of regulatory standards andcustomer-defined security requirements, the regulatory standardsincluding at least one of Payment Card Industry (PCI) Data SecurityStandard, Health Insurance Portability and Accountability Act (HIPAA),System and Organization Controls (SOC2) compliance standard, and the useof Transport Layer Security (TLS). In some implementations of thesystem, method, and non-transient computer-readable storage mediumdescribed herein, the customer-defined security requirements comprise atleast one of multi-factor authentication and a zero-trust securitymodel.

In some implementations of the system, method, and non-transientcomputer-readable storage medium, the first request is furthertransformed from a first format to a second format, where the secondformat is different than the first format and comprises one or more ofrequest headers, response headers, request bodies, response bodies,request methods, response methods, and cookies.

In some implementations of the system, method, and non-transientcomputer-readable storage medium, the server comprises a webserver, thewebserver comprising at least one of an Apache server, an IBM HTTPserver (IHS), an Oracle HTTP server (OHS), and a NGINX server.

In some implementations of the system, method, and non-transientcomputer-readable storage medium, the response comprises a response fromthe IAM system blocking the first request from reaching the application,and wherein the first request comprises an unmodified request receivedfrom the first user device.

In some implementations of the system, method, and non-transientcomputer-readable storage medium, determining the requirements forapplication authentication and application authorization comprisesanalyzing one or more of application authentication requirements andapplication authorization requirements in the identity infrastructurefor migration from the IAM system to another IAM system. In someimplementations of the system, method, and non-transientcomputer-readable storage medium, the another IAM system comprises oneor more of an IAM system utilizing a standard identity protocol, thestandard identity protocol comprising at least one of OpenID Connect(OIDC), Security Assertion Markup Language (SAML), and WebAuthn; an IAMsystem supporting multi-factor authentication; and an IAM system that isnot supported by a third-party, wherein the third-party comprises avendor.

In some implementations of the system, method, and non-transientcomputer-readable storage medium, the migration from the IAM system tothe another IAM system comprises using a third-party system to pass,from the IAM system to the another IAM system, one or more of theidentity dependencies; requirements for application authentication andauthorization; one or more identity protocols utilized by theapplication; one or more identity techniques utilized by theapplication; predetermined compliance standards; and user-definedsecurity requirements.

One aspect of the present disclosure relates to a system configured foranalyzing authentication and authorization requirements in an identityinfrastructure. The system may include one or more hardware processorsconfigured by machine-readable instructions. The processor(s) may beconfigured to intercept a first request to access an application in theidentity infrastructure. The processor(s) may be configured to capture asecond request to access the application. The second request may includea modified version of the first request to include one or more identitydependencies received from an identity and access management system. Theprocessor(s) may be configured to identify a transmission of the secondrequest to the application. The processor(s) may be configured tointercept a response from the application, based at least in part on thetransmission. The processor(s) may be configured to display, via atleast one interface, an analysis of one or more of the first request,the second request, and the response. The analysis may includedetermining at least one of requirements for application authenticationand authorization, one or more identity protocols utilized by theapplication, one or more identity techniques utilized by theapplication, whether application meets predetermined compliancestandards, and whether any user-defined security requirements have beenimplemented.

In some implementations of the system, the identity dependencies mayinclude identity attributes received from an external attribute source,request headers, response headers, request bodies, response bodies,request methods, response methods, and cookies. In some implementationsof the system, the at least one interface may include one or more of agraphical user interface (GUI) and an application programming interface(API).

In some implementations of the system, the identity attribute(s) maycomprise an email address, a phone number, a residential address, a jobtitle, an employer department, and/or an employee identifier (ID)number. It should be noted that other types of identity attribute(s) arecontemplated in different embodiments and the examples listed herein arenot intended to be limiting. In some implementations of the system, theexternal attribute source may include one or more of a lightweightdirectory access protocol (LDAP) associated with the application, adatabase, and a web service.

In some implementations of the system, the request headers and/orresponse headers may include one or more of modifying and addinghypertext transfer protocol (HTTP) headers. In some implementations ofthe system, the cookies may include or more of modifying and adding HTTPcookies.

In some implementations of the system, the request bodies and responsebodies may include one or more of modifying and adding HTTP requestbodies. For instance, in some embodiments, one or more HTTP requestbodies (or alternatively, HTTP request values) included in the requestbody of the application request may be modified. Additionally, oralternatively, one or more HTTP request values may be added to therequest body of the application request. In other cases, one or moreHTTP request bodies may be added to one or more of the request bodiesand response bodies described herein.

In some implementations of the system, the request method(s) may includean HTTP request method. In some implementations of the system, theresponse method(s) may include an HTTP response method. In someimplementations of the system, the request and response methods comprisean HTTP request method.

In some implementations of the system, the HTTP request method mayinclude at least one of a GET method, a HEAD method, a POST method, aPUT method, a DELETE method, a CONNECT method, a TRACE method, and aPATCH method.

In some implementations of the system, the HTTP response method mayinclude at least one of a GET method, a HEAD method, a POST method, aPUT method, a DELETE method, a CONNECT method, a TRACE method, and aPATCH method.

In some implementations of the system, the identity dependencies mayinclude the requirements for authentication and authorization. In someimplementations of the system, the HTTP headers may include custom HTTPheaders (e.g., “X-Username: jdoe” or “X-Groups: [“admins”,“executives”]”). In some implementations of the system, the HTTP cookiesmay include custom HTTP cookies (e.g., “Cookie: username=jdoe;groups=[“admins”, “executives”]”).

In some implementations of the system, the requirements forauthentication and authorization may include multi-factor authentication(or MFA) and rules governing access of application resources (i.e.,resources associated with the application, such as, but not limited to,URL paths, files, documents, images, videos, strings, etc.). In someimplementations of the system, the MFA may include one or more of usercredentials (e.g., username, password), biometrics (e.g., fingerprint,iris scan, retina scan, voice recognition, facial recognition), andSingle Sign-On (SSO) policies.

In some implementations of the system, the custom HTTP headers mayinclude at least username and/or group information. The custom HTTPheaders may further comprise one or more application user attributes forone or more users, where the one or more application user attributes areselected from a group consisting of a first name, a last name, an emailaddress, group membership information, a role, a title, and a username.In some implementations of the system, the custom HTTP cookies mayinclude one or more of a username, a unique identifier, an encryptedvalue, and a group.

In some implementations of the system, at least one of the identitydependencies and the requirements for authentication and authorizationmay include one or more differences between the second request (i.e.,the modified version of the first request) and the first request. Insome instances, the one or more differences between the second requestand the first request may be based at least in part on addition ofcustom HTTP headers to the first request, addition of custom cookies tothe first request, and modification of one or more attributes in one ormore of the first request and the second request. For example, the firstrequest may be modified by adding one or more custom HTTP headers,custom cookies, etc., to create the second request. In some instances,this modification of the first request may be performed by a legacy IAMmodule (e.g., IAM module 416-a in FIG. 4A) of a webserver (e.g.,webserver 415-a in FIG. 4A).

In some implementations of the system, at least one of the identitydependencies and the requirements for authentication and authorizationcomprises one or more differences between the second request and thefirst request, wherein the one or more differences between the secondrequest and the first request include at least one of addition of thecustom HTTP headers, addition of the custom HTTP cookies, andmodification of one or more attributes in one or more of the firstrequest and the second request.

In some implementations of the system, the HTTP response headers mayinclude status codes, redirect locations, and query parameters. In someembodiments, the HTTP response headers may be included in theapplication response received from the app. In some implementations ofthe system, the HTTP headers comprise one or more of status codes,redirect locations, query parameters, and one or more custom HTTPheaders.

Another aspect of the present disclosure relates to a method foranalyzing authentication and authorization requirements in an identityinfrastructure. The method may include intercepting a first request toaccess an application in the identity infrastructure. The method mayinclude capturing a second request to access the application. The secondrequest may include a modified version of the first request to includeone or more identity dependencies received from an identity and accessmanagement system. The method may include identifying a transmission ofthe second request to the application. The method may includeintercepting a response from the application, based at least in part onthe transmission. The method may include displaying, via at least oneinterface, an analysis of one or more of the first request, the secondrequest, and the response. The analysis may include determining at leastone of requirements for application authentication and authorization,one or more identity protocols utilized by the application, one or moreidentity techniques utilized by the application, whether applicationmeets predetermined compliance standards, and whether any user-definedsecurity requirements have been implemented.

In some implementations of the method, the identity dependencies mayinclude identity attributes received from an external attribute source,request and response headers, request and response bodies, request andresponse methods, and cookies. In some implementations of the method,the at least one interface may include one or more of a graphical userinterface and an application programming interface.

In some implementations of the method, the identity attributes mayinclude one or more of an email address, a phone number, a residentialaddress, a job title, an employer department, and an employee ID. Insome implementations of the method, the external attribute source mayinclude one or more of a LDAP associated with the application, adatabase, and a web service. In some implementations of the method, therequest and response headers may include one or more of modifying andadding HTTP headers. In some implementations of the method, the cookiesmay include or more of modifying and adding HTTP cookies. In someimplementations of the method, the request and response bodies mayinclude one or more of modifying and adding HTTP request bodies (oralternatively, HTTP request values). In some implementations of themethod, the request and response methods may include an HTTP requestmethod (or simply, an HTTP method).

In some implementations of the method, the identity dependencies mayinclude the requirements for authentication and authorization. In someimplementations of the method, the HTTP headers may include custom HTTPheaders. In some implementations of the method, the HTTP cookies mayinclude custom HTTP cookies. In some implementations of the method, theHTTP request method (or HTTP method) may include at least one of a GETmethod, a HEAD method, a POST method, a PUT method, a DELETE method, aCONNECT method, a TRACE method, and a PATCH method.

In some implementations of the method, the requirements forauthentication and authorization may include MFA and rules governingaccess of application resources. In some implementations of the method,the multi-factor authentication may include one or more of username,password, biometric, and SSO policies. In some implementations of themethod, the custom HTTP headers may include at least one of a usernameand a group. In some implementations of the method, the custom HTTPcookies may include at least one of a username and a group.

In some implementations of the method, at least one of the identitydependencies and the requirements for authentication and authorizationmay include one or more differences between the second request and thefirst request.

In some implementations of the method, the HTTP response headers mayinclude status codes, redirect locations, and query parameters.

Yet another aspect of the present disclosure relates to a non-transientcomputer-readable storage medium having instructions embodied thereon,the instructions being executable by one or more processors to perform amethod for analyzing authentication and authorization requirements in anidentity infrastructure. The method may include intercepting a firstrequest to access an application in the identity infrastructure. Themethod may include capturing a second request to access the application.The second request may include a modified version of the first requestto include one or more identity dependencies received from an identityand access management system. The method may include identifying atransmission of the second request to the application. The method mayinclude intercepting a response from the application, based at least inpart on the transmission. The method may include displaying, via atleast one interface, an analysis of one or more of the first request,the second request, and the response. The analysis may includedetermining at least one of requirements for application authenticationand authorization, one or more identity protocols utilized by theapplication, one or more identity techniques utilized by theapplication, whether application meets predetermined compliancestandards, and whether any user-defined security requirements have beenimplemented.

In some implementations of the computer-readable storage medium, theidentity dependencies may include identity attributes received from anexternal attribute source, request and response headers, request andresponse bodies, request and response methods, and cookies. In someimplementations of the computer-readable storage medium, the at leastone interface may include one or more of a graphical user interface andan application programming interface.

In some implementations of the computer-readable storage medium, theidentity attributes may include one or more of an email address, a phonenumber, a residential address, a job title, an employer department, andan employee identifier or ID. In some implementations of thecomputer-readable storage medium, the external attribute source mayinclude one or more of a LDAP associated with the application, adatabase, and a web service. In some implementations of thecomputer-readable storage medium, the request and response headers mayinclude one or more of modifying and adding HTTP headers. In someimplementations of the computer-readable storage medium, the cookies mayinclude or more of modifying and adding HTTP cookies. In someimplementations of the computer-readable storage medium, the request andresponse bodies may include one or more of modifying and adding HTTPrequest bodies (or alternatively, HTTP request values). In someimplementations of the computer-readable storage medium, the request andresponse methods may include an HTTP request method.

In some implementations of the computer-readable storage medium, theidentity dependencies may include the requirements for authenticationand authorization. In some implementations of the computer-readablestorage medium, the HTTP headers may include custom HTTP headers. Insome implementations of the computer-readable storage medium, the HTTPcookies may include custom HTTP cookies. In some implementations of thecomputer-readable storage medium, the HTTP request method may include atleast one of a GET method, a HEAD method, a POST method, a PUT method, aDELETE method, a CONNECT method, a TRACE method, and a PATCH method.

In some implementations of the computer-readable storage medium, therequirements for authentication and authorization may includemulti-factor authentication and rules governing access of resourcesassociated with the application. In some implementations of thecomputer-readable storage medium, the multi-factor authentication mayinclude one or more of a username, a password, biometric information,and SSO policies. In some implementations of the computer-readablestorage medium, the custom HTTP headers may include at least one of ausername and a group. In some implementations of the computer-readablestorage medium, the custom HTTP cookies may include at least one of ausername and a group.

In some implementations of the computer-readable storage medium, atleast one of the identity dependencies and the requirements forauthentication and authorization may include one or more differencesbetween the second request and the first request.

These and other features, and characteristics of the present technology,as well as the methods of operation and functions of the relatedelements of structure and the combination of parts and economies ofmanufacture, will become more apparent upon consideration of thefollowing description and the appended claims with reference to theaccompanying drawings, all of which form a part of this specification,wherein like reference numerals designate corresponding parts in thevarious figures. It is to be expressly understood, however, that thedrawings are for the purpose of illustration and description only andare not intended as a definition of the limits of the invention. As usedin the specification and in the claims, the singular form of ‘a’, ‘an’,and ‘the’ include plural referents unless the context clearly dictatesotherwise.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 illustrates a system configured for analyzing authentication andauthorization requirements in an identity infrastructure, in accordancewith various aspects of the disclosure.

FIG. 2A illustrates an example of a method for analyzing authenticationand authorization requirements in an identity infrastructure, inaccordance with various aspects of the disclosure.

FIG. 2B illustrates a method for analyzing authentication andauthorization requirements in an identity infrastructure, in accordancewith various aspects of the disclosure.

FIG. 2C illustrates a method for analyzing authentication andauthorization requirements in an identity infrastructure, in accordancewith various aspects of the disclosure.

FIG. 2D illustrates a method for analyzing authentication andauthorization requirements in an identity infrastructure, in accordancewith various aspects of the disclosure.

FIG. 2E illustrates a method for analyzing authentication andauthorization requirements in an identity infrastructure, in accordancewith various aspects of the disclosure.

FIG. 3 illustrates a diagrammatic representation of a computer systemconfigured for analyzing authentication and authorization requirementsin an identity infrastructure, in accordance with various aspects of thedisclosure.

FIG. 4A illustrates a swim diagram representation of a method foranalyzing authentication and authorization requirements in an identityinfrastructure, in accordance with various aspects of the disclosure.

FIG. 4B illustrates a detailed swim diagram representation of thecapture process in FIG. 4A, in accordance with various aspects of thedisclosure.

FIG. 4C illustrates a detailed swim diagram representation of theanalysis process in FIG. 4A, in accordance with various aspects of thedisclosure.

FIG. 4D illustrates a detailed swim diagram representation of theserving process in FIG. 4A, in accordance with various aspects of thedisclosure.

FIG. 5 illustrates another swim diagram representation of a method foranalyzing authentication and authorization requirements in an identityinfrastructure, in accordance with various aspects of the disclosure.

FIG. 6 illustrates an example of an identity infrastructure comprising adiscovery module for analyzing authentication and authorizationrequirements in the identity infrastructure, according to variousaspects of the disclosure.

DETAILED DESCRIPTION

In the following detailed description, references are made to theaccompanying drawings that form a part hereof, and in which are shown byway of illustrations or specific examples. These aspects may becombined, other aspects may be utilized, and structural changes may bemade without departing from the present disclosure. Example aspects maybe practiced as methods, systems, or devices. Accordingly, exampleaspects may take the form of a hardware implementation, a softwareimplementation, or an implementation combining software and hardwareaspects. The following detailed description is therefore not to be takenin a limiting sense, and the scope of the present disclosure is definedby the appended claims and their equivalents.

The words “for example” is used herein to mean “serving as an example,instant, or illustration.” Any embodiment described herein as “forexample” or any related term is not necessarily to be construed aspreferred or advantageous over other embodiments. Additionally, areference to a “device” is not meant to be limiting to a single suchdevice. It is contemplated that numerous devices may comprise a single“device” as described herein.

The embodiments described below are not intended to limit the disclosureto the precise form disclosed, nor are they intended to be exhaustive.Rather, the embodiment is presented to provide a description so thatothers skilled in the art may utilize its teachings. Technologycontinues to develop, and elements of the described and disclosedembodiments may be replaced by improved and enhanced items, however theteaching of the present disclosure inherently discloses elements used inembodiments incorporating technology available at the time of thisdisclosure.

The detailed descriptions which follow are presented in part in terms ofalgorithms and symbolic representations of operations on data within acomputer memory where such data often represents numerical quantities,alphanumeric characters or character strings, logical states, datastructures, or the like. A computer generally includes one or moreprocessing mechanisms for executing instructions, and memory for storinginstructions and data.

When a general-purpose computer has a series of machine-specific encodedinstructions stored in its memory, the computer executing such encodedinstructions may become a specific type of machine, namely a computerparticularly configured to perform the operations embodied by the seriesof instructions. Some of the instructions may be adapted to producesignals that control operation of other machines and thus may operatethrough those control signals to transform materials or influenceoperations far removed from the computer itself. These descriptions andrepresentations are the means used by those skilled in the dataprocessing arts to convey the substance of their work most effectivelyto others skilled in the art.

The term algorithm as used herein, and generally in the art, refers to aself-consistent sequence of ordered steps that culminate in a desiredresult. These steps are those requiring manipulations of physicalquantities. Usually, though not necessarily, these quantities take theform of electrical or magnetic pulses or signals capable of beingstored, transferred, transformed, combined, compared, and otherwisemanipulated. It is often convenient for reasons of abstraction or commonusage to refer to these signals as bits, values, symbols, characters,display data, terms, numbers, or the like, as signifiers of the physicalitems or manifestations of such signals. It should be borne in mind,however, that all of these and similar terms are to be associated withthe appropriate physical quantities and are merely used here asconvenient labels applied to these quantities.

Some algorithms may use data structures for both inputting informationand producing the desired result. Data structures facilitate datamanagement by data processing systems and are not accessible exceptthrough sophisticated software systems. Data structures are not theinformation content of a memory, rather they represent specificelectronic structural elements which impart or manifest a physicalorganization on the information stored in memory. More than mereabstraction, the data structures are specific electrical or magneticstructural elements in memory which simultaneously represent complexdata accurately, often data modeling physical characteristics of relateditems, and provide increased efficiency in computer operation. Bychanging the organization and operation of data structures and thealgorithms for manipulating data in such structures, the fundamentaloperation of the computing system may be changed and improved.

In the descriptions herein, operations and manipulations are oftendescribed in terms, such as comparing, sorting, selecting, or adding,which are commonly associated with mental operations performed by ahuman operator. It should be understood that these terms are employed toprovide a clear description of an embodiment of the present invention,and no such human operator is necessary, nor desirable.

This requirement for machine implementation for the practicalapplication of the algorithms is understood by those persons of skill inthis art as not a duplication of human thought, rather as significantlymore than such human capability. Useful machines for performing theoperations of one or more embodiments of the present disclosure includegeneral-purpose digital computers or other similar devices. In allcases, the distinction between the method operations in operating acomputer and the method of computation itself should be recognized. Oneor more embodiments of the present disclosure relate to methods andapparatus for operating a computer in processing electrical or other(e.g., mechanical, chemical) physical signals to generate other desiredphysical manifestations or signals. The computer operates on softwaremodules, which are collections of signals stored on a media thatrepresents a series of machine instructions that enable the computerprocessor to perform the machine instructions that implement thealgorithmic steps. Such machine instructions may be the actual computercode the processor interprets to implement the instructions, oralternatively may be a higher-level coding of the instructions that isinterpreted to obtain the actual computer code. The software module mayalso include a hardware component, where some aspects of the algorithmmay be performed by the circuitry itself rather than a result of aninstruction.

Some embodiments of the present disclosure rely on an apparatus forperforming one or more of the disclosed operations. This apparatus maybe specifically constructed for the required purposes, or it maycomprise a general purpose or configurable device, such as a computerselectively activated or reconfigured by a program comprisinginstructions stored to be accessible by the computer. The algorithmspresented herein are not inherently related to any particular computeror other apparatus unless explicitly indicated as requiring particularhardware. In some cases, the computer programs may communicate orinteract with other programs or equipment through signals configured toparticular protocols which may or may not require specific hardware orprogramming to accomplish. In particular, various general-purposemachines may be used with programs written in accordance with theteachings herein, or it may prove more convenient to construct morespecialized apparatus to perform the required method steps. The requiredstructure for a variety of these machines will be apparent from thedescription below.

In the following description, several terms which are used frequentlyhave specialized meanings in the present context.

In the description of embodiments herein, frequent use is made of theterms server, client, and client/server architecture. In this context, aserver and client are each instantiations of a set of functions andcapabilities intended to support distributed computing. These terms areoften used to refer to a computer or computing machinery, yet it shouldbe appreciated that the server or client function is provided by machineexecution of program instructions, threads, modules, processes, orapplications. The client computer and server computer are often, but notnecessarily, geographically separated, although the salient aspect isthat the client and server each perform distinct, but complementaryfunctions to accomplish a task or provide a service. The client andserver accomplish this by exchanging data (e.g., in data flows),messages, and state information using a computer network, or multiplenetworks. It should be appreciated that in a client/server architecturefor distributed computing, there are typically multiple servers andmultiple clients, and they do not map to each other and further theremay be more servers than clients or more clients than servers. A serveris typically designed to interact with multiple clients. In someembodiments, a client computer (or simply, client) may be implementedusing a user device or user equipment (UE), one non-limiting example ofwhich includes UE 405-a in FIG. 4A. Some non-limiting examples of UEs(or clients) may include one or more of a laptop, a desktop computer, atablet computer, and/or a NetBook. Furthermore, the UEs discussed hereinmay utilize any type of operating system (OS) and/or may supportdifferent types of communication technologies (e.g., wired or wirelesscommunication technologies).

In networks, bi-directional data communication (i.e., data flows ortraffic) may occur through the transmission of encoded light,electrical, or radio signals over wire, fiber, analog, digital cellular,Wi-Fi, or personal communications service (PCS) media, or throughmultiple networks and media connected by gateways or routing devices.Signals may be transmitted through a physical medium such as wire orfiber, or via wireless technology using encoded radio waves. Muchwireless data communication takes place across cellular systems usingsecond generation technology such as code-division multiple access(CDMA), time division multiple access (TDMA), the Global System forMobile Communications (GSM), Third Generation (wideband or 3G), FourthGeneration (broadband or 4G), Fifth Generation (5G), personal digitalcellular (PDC), or through packet-data technology over analog systemssuch as cellular digital packet data (CDPD).

Definitions and Terminology Used in the Disclosure

For the purposes of this disclosure, identity data may refer toindividual users' data, including their credentials and attributes. Forinstance, identity data may include one or more of a user identity(e.g., first and/or last name of a user), a user credential (e.g.,username, password, password authentication token, etc., that are boundto the user), and a user attribute (e.g., email address, phone number,residential address, job title, department, employee ID, etc.) for eachof one or more individual users of one or more identity domains oridentity providers (e.g., identity provider associated with IAM module416-a in FIG. 4A). As used herein, the terms “identity domain”,“identity system”, “IAM system”, or “identity provider” may be usedinterchangeably throughout the disclosure. Additionally, the terms“discovery module”, “discovery agent”, or “discovery element” may alsobe used interchangeably throughout the disclosure.

An identity session (also referred to herein as a “session”) may referto an established set of identity data (e.g., identity data accepted bythe identity infrastructure to access a resource, such as anapplication) that represents a user interacting with the identityinfrastructure. In some cases, an identity session (e.g., session 634 inFIG. 6 ) may be established by authenticating a user (e.g., by a userproving their identity through a mechanism such as username and passwordand/or biometrics, such as fingerprint, iris scan, voice recognition,etc.) and maintaining this session state (e.g., authenticated state) forsome established period of time or until the user logs out or theiraccess rights are otherwise suspended. In some cases, an identitysession may refer to a logical construct, for instance, based on auser's identity, that establishes persistence across resource access(e.g., file access, app access) and/or page views (e.g., hypertexttransfer protocol (HTTP) pages). It is contemplated that a “resource”may also refer to “page views”. For example, HTTP is a statelessprotocol, which means that when a user requests a particular webpage orresource from a server, and subsequently requests another webpage orresource from the same server, the server treats the user as a new“requestor” each time. In some examples, a session state refers to afeature that allows an identity domain to remember the user by keeping atemporary record of identity data associated with the user. In somecases, each identity session may be assigned a unique identifier (orsession ID) and this session ID may be used to store and retrieve asession state (or an application's working set of data) before and aftereach page view (e.g., HTTP page view). The application's working set ofdata may refer to information associated with one or more page views(e.g., items in a shopping cart for an online shopping or e-commercewebsite). In some cases, the information associated with the session,such as the session ID, may be stored on the server from which the useris requesting the webpage or resource. Additionally, or alternatively,the session ID may be stored on a different computing device such as auser device (e.g., laptop, smartphone, etc.) from which the user isaccessing the resource. In some cases, an identity session may beestablished by authenticating a user and maintaining a session state forat least a threshold or an established period of time (e.g., 1 minute,30 seconds, 5 minutes, etc.). In some cases, an identity session mayalso constitute a set of permissions granted to the user (e.g., foraccessing resources, such as protected resources accessible to onlycertain users, in the identity infrastructure) and/or role informationassociated with the user. In some embodiments, the role information maybe different from the user attribute. For instance, multiple users maybe associated with the same or similar role information but may havedifferent user attributes. In one example, users having similardesignations or seniority levels in an organization (e.g., managers,managing directors, staff engineers, etc.) may be associated with thesame or similar role information.

Identity metadata may be used herein to refer to information pertainingto how identity is managed and coordinated. Identity metadata mayinclude password rules, such as, but not limited to password length or arequirement that the password must contain one capital letter, onenumber, one symbol and/or cannot be the same as a previous password.Identity metadata may also include authorization policies, such as, butnot limited to a policy which states that user must be in theadministrator group to access a resource, a user must be logged in froma US-based IP address, and/or a user may only access resources duringbusiness hours (e.g., 9 AM to 5 PM). Additionally, or alternatively,identity metadata may also include a trust policy and network locationsfor identity domain elements of one or more identity domains (i.e.,identity providers). The identity metadata may further include one ormore of: the enumeration of identity infrastructure elements and theirnetwork location and configuration, identity policies such asauthorization or authentication rules and mechanisms, and identitysession structure and content.

In some examples, identity sessions may comprise timestamps for when asession was initiated, the maximum lifetime of a session, how long asession should last for an idle user, an opaque user identifier (e.g., atype of user identifier that does not reveal the user's identity and maycomprise a random string or number), a reference to a session identifier(potentially optional, e.g., if maintained centrally), a reference to arequested resource, one or more claims about the user (which maycomprise identity attributes), one or more “scopes”, and/or anenumeration of privileges the user has for the requested resource. Insome examples, sessions may be maintained in browser cookies, JavaScriptObject Notation (JSON) objects that are passed between differentendpoints, server caches, or databases. In some cases, scopes may beused to define the specific actions that are permitted to be performedon behalf of a user, an application, etc. When a user agent (e.g., webbrowser) requests permission to access a protected resource orapplication through an authorization server, a scope parameter may beprovided to specify what access is needed and the authorization servermay use the scope parameter to respond with the access that is actuallygranted (e.g., the granted access may be different from what wasrequested). In some examples, this process may comprise theauthorization server (e.g., access system 623) generating an accesstoken comprising one or more scopes based on evaluating the userauthentication data and/or scope parameters. In some cases, the accesstoken comprises a string of random characters that enables the protectedresource (e.g., app 620) to verify whether incoming requests should begranted access to the protected app. For instance, the access token maybe based in part on the username/password credentials received from theuser during login (e.g., login 601). In some cases, the access tokenserves as a key comprising a collection of metadata (e.g., informationpertaining to an authorization policy for the user).

An identity domain (e.g., depicted by IAM module 416-a) refers to acomputing system for managing one or more of users and roles,integration standards, external identities (e.g., identities notassociated with the identity domain), and secure application integrationusing, for instance, an authentication scheme (e.g., Single Sign-On(SSO)) and/or an authorization protocol (e.g., a set of rules thatallows a third-party website or application to access a user's datawithout the user needing to share login credentials).

Application integration, as used herein, refers to a mechanism forsupporting interactions between a protected app/resource associated witha first identity domain and users associated with a second differentidentity domain. As an example, an enterprise may have developed an appfor its customer or enterprise partner, where the app may be secured bya first identity domain. Further, the enterprise partner may alreadymanage one or more identities on other identity domains, such as asecond identity domain. In such cases, the enterprise may integratetheir app with the second identity domain, which may allow usersassociated with the second identity domain to seamlessly interact withtheir app without creating another identity (e.g., in the first identitydomain) to access the app. In another case, an enterprise may migrateusers from a legacy identity domain to a new identity domain, whilestill keeping the legacy identity domain for controlling access to anapplication. In such cases, users attempting to access the applicationmay login with the new identity domain, following which anintermediary/proxy updates a datastore, where the datastore is utilizedby the app to grant or deny access to its resources.

In some cases, integration of identities and applications may beperformed using one of numerous methods, such as manual identityadministration (e.g., manually adding users from the second identitydomain into the first identity domain), utilizing existing identitysolutions (e.g., allowing users to sign in using their GOOGLE orMICROSOFT credentials, provided by Alphabet, Inc., of Mountain View, CA,and Microsoft Corp., of Redmond, WA, respectively), and/or federation(e.g., enterprise and customer mutually agree to allow the customerusers to use their own identities to access the app provided by theenterprise). In some cases, identity federation may comprise enforcingcommon identity standards and protocols to coordinate and manage useridentities between different identity providers or identity domains,applications, etc., across an identity infrastructure.

There exist numerous identity and access management (IAM) standards(also referred to as integration standards) for managing access. In somecases, these IAM standards are “open” standards, that is, they arepublicly available and associated with one or more rights to use. Insome cases, these IAM standards are integrated (e.g., unified) and usedacross a plurality of applications, devices, and/or users. Somenon-limiting examples of IAM standards include Security Assertion MarkupLanguage (SAML) used to send authorization messages between trustedpartners or entities, OpenID Connect (OIDC), Web Services Trust(WS-Trust), WS-Federation, and OAuth. SAML defines an XML framework forexchanging security assertions among security authorities andfacilitates interoperability across different vendor platforms thatprovide authentication and/or authorization services. In somecircumstances, OAuth may enable a user's account information to be usedby third-party services, such as FACEBOOK provided by Facebook, Inc., ofMenlo Park, CA, without exposing the user's password. In some examples,an identity domain (or identity provider) controls the authenticationand authorization of the users who can sign into a service (e.g., acloud service), and what features they can access in relation to theservice. For example, a cloud service (e.g., Database Cloud Service andInfrastructure as a Service (IaaS)) may be associated with an identitydomain. Multiple services may be associated with a single identitydomain or provider to share user definitions and authentication rules,for instance. In some cases, users associated with an identity domainmay be granted different levels of access (or authorization) to eachservice (e.g., cloud service) associated with the identity domain. Forinstance, a first user (e.g., a system administrator) may be providedboth read and write access, while another user (e.g., accountant) mayonly be provided read access. Thus, in some aspects, an identity domainor provider is a self-contained realm with consistent identity data andidentity metadata throughout. Some non-limiting examples of an identitydomain include an Active Directory (AD) domain or an OKTA account for asingle company. It should be noted that other identity domains known inthe art may be contemplated in different embodiments.

A trust relationship refers to a logical link established between twoentities (e.g., a user and an identity domain, two identity domains,etc.), where one of the entities may be referred to as a trusting domain(e.g., a first identity domain) while the other may be referred to as atrusted domain (e.g., a second identity domain). When a trustrelationship is in place, the trusting domain may honor, for instance, alogin authentication associated with the trusted domain. In somecircumstances, trust relationships may be necessary for identitysessions to be accepted by the protected resource (e.g., application).Trust relationships may be a way to establish the validity of identitysessions and prevent spoofing of an identity session. In some cases,trust relationships may be established via a signature generated from aprivate key and validated using an associated public key.

Public key cryptography (also known as asymmetric cryptography) refersto an encryption technique where two parties (e.g., a user and anidentity domain/provider, a user and a protected resource) may each beassigned two keys—a public key and a private key. Numerous cryptographictools and modules exist for generating public/private key pairs. Onenon-limiting example of such a tool is OpenSSL provided by TheOpenSSLProject. OpenSSL is an open-source command line tool that is used forTransport Layer Security (TLS) and Secure Socket Layer (SSL) protocolsand may be used to generate public/private keys, install SSL/TLScertificates, and identity certificate information. Other types ofcommercial and/or open-source tools for generating public and privatekeys are contemplated in different embodiments. In some cases, the twokeys for a respective party may be connected and may comprise two largeprime numbers (e.g., 100 digits long, 150 digits long, etc.) withcertain mathematical properties. For instance, two random n-bit (e.g.,512-bit, 1024-bit, etc.) prime numbers may be generated and multipliedtogether to create a modulus (N), where the value N is part of thepublic and private key. The public key may be shareable and may allow areceiving entity to receive messages from other entities. Further, thereceiving entity may decrypt the message or dataflow using their privatekey. In such cases, a receiving entity may decode a message or dataflowencoded by a transmitting entity (i.e., using the receiving entity'spublic key) by using their private key (i.e., the receiving entity'sprivate key). In some cases, a user may be authenticated using theirlogin credentials and a trusted third party (e.g., a CertificationAuthority (CA)) may prove a link between the user's public key and theuser's identity. For instance, the CA may be associated with a publickey and a private key and may sign a certificate using their privatekey. The identity domain or protected resource may use the CA's publickey to determine the user's public key (e.g., embedded within thecertificate) and verify the user (i.e., confirm the user's identity byverifying who they say they are). In some cases, any entity (e.g.,protected resource, another user, etc.) with the CA's public key maydecrypt the certificate to identify the user's public key.

In some cases, public/private key pairs may also be used to decrypt andverify assertions between different identity domain and/or identityinfrastructure elements. Each receiving entity possessing a transmittingentity's public key may be able to read (e.g., decrypt) a message thathas been signed using a corresponding private key of the transmittingentity and confirm that the original contents of the message have notbeen altered, for instance. Or, in one non-limiting example, an identitydomain element may use its private key to sign a cookie associated withan identity session. In such cases, one or more protected resources orapplications that trust and rely on the cookie to grant user access tothe protected resource may utilize the public key in the identitysession to decrypt and verify the signature, thereby enabling access tothe protected resource.

In other cases, trust relationships may involve Transport Layer Security(TLS) combined with a Domain Name System (DNS) to confirm that trafficis routed to the expected element and not subject to interception by arogue party (e.g., Man-in-the-middle attack). As an example, two serversmay connect together over a network and communicate with each other,where their communications may be secured using TLS. In some cases, TLSmay involve the use of a specific protocol to enable the servers toestablish their identity with each other. Similarly, communication(s)between an identity domain/provider, protected resource, etc., may besecured using TLS. In some cases, a DNS routing a request to a host(e.g., a first server) may issue a certificate to the requesting party(e.g., a second server, a user agent, etc.) to prove that the DNS routedthe request to the correct host. In some cases, the certificate may besigned using a private key associated with the DNS and may comprise apublic key associated with the host server. The requesting party maydecrypt the certificate (e.g., using the public key associated with theDNS) and retrieve the public key of the host embedded within thecertificate, which may allow the requesting party to confirm that therequest was routed to the expected element. In other cases, the hostserver may issue a certificate and sign it using their private key. TheDNS or the host may further relay the certificate to the requestingparty. After decryption, the requesting party may confirm the identityof the host that received their request.

In some examples, a discovery module (e.g., discovery module 417-a,discovery module 517, discovery module 617) may be employed to analyzeauthentication and authorization requirements in an identityinfrastructure. The discovery module may be installed at a webserver tocapture app requests (i.e., requests to access a protected app orresource) and app responses (i.e., responses transmitted by the appindicating whether a user is granted or denied access to the app) andpresent an analysis of the same to a discovery module user. In this way,the discovery module may facilitate migration to a new identity domain,for instance, enable the app or protected resource to be utilized with anew identity domain.

Lastly, a protected resource may refer to an element or application ofthe identity infrastructure that assesses or evaluates the identity data(e.g., information provided by a user to access the protected resourcesuch as, but not limited to, a username, password, user attribute,unique identifier, unique pin, and biometric information such as, butnot limited to a fingerprint, iris scan, and voice input, and otherinformation known in the art) in order to make access and controldecisions about its resources and/or data. One non-limiting example of aprotected resource may include the app 420 (e.g., app 420-a and/or app420-b). In other words, a protected resource may be aware about theidentity data needed to access it. In some circumstances, the protectedresource may use the identity session and/or the identity data indeciding to allow access to its data. In some embodiments, the protectedresource may only allow restricted or partial access based on evaluatingthe identity data. As an example, a protected resource may expect aheader or a cookie for access to the protected resource, while anotherprotected resource may merely grant access upon a user arriving at thatprotected resource. Thus, each protected resource may be aware of themechanism by which it may be provided an identity session by itsassociated identity domain. In some aspects, the protected resource(s)are coupled to the identity domain based on their reliance on identitysession(s) and their particular formats and security constraints (i.e.,identity data and/or identity metadata formats and constraints).

In some cases, a header/cookie may be passed in a token, such as anauthentication token or an access token. In some cases, theauthentication token may be generated and assigned to a user once theuser is authenticated. Further, a certificate (e.g., a Public KeyInfrastructure (PKI) certificate, such as a Secure Socket Layer (SSL)certificate) linked to the authentication token and representing a valididentity session may be issued to the user. In some cases, thecertificate may be issued by a third party, such as a CertificationAuthority (CA), and may include the user's public key, a name, and anyother applicable information. The certificate may serve as anattestation by the CA that the user is who they claim to be. Forinstance, the CA may sign a data structure that contains the user'spublic key and name, thus binding the user's public key to their name.Further, the certificate may be encrypted by the CA. The CA may also belinked to a private key and a public key, and may encrypt thecertificate with a combination of the public and private keys associatedwith the CA. Any entity (e.g., protected resource or app, another user,another identity domain, etc.) with access to the CA's public key mayverify the certificate (i.e., that the certificate is issued by atrusted CA) and/or the claim made in the certificate (i.e., the user isassociated with the user's public key). The user may utilize thiscertificate for interactions with the protected resource, for instance.

In some cases, authorization may comprise using attribute informationassociated with the token issued to the user during authentication andcomparing said information to access control rules for the protectedresource (e.g., app, such as app 620). If the rule permits the user toaccess the protected resource, the authorization is successful, and theuser is granted access to the protected resource. In some other cases,access tokens may be utilized, for instance, if an identitydomain/provider or protected resource does not support the use ofcertificates and authentication tokens. In such cases, an access tokenmay be issued by a server, such as an authorization server (e.g., accesssystem 623) once the user identity data, access control rules, etc., isverified. In other words, the access token may serve as a proof that theuser is authorized for access. This access token may be sent in anauthorization header, such as an HTTP authorization header, and may beused to establish user identity and authorization. In some cases, theprotected resource (e.g., app 620) or identity domain/provider mayvalidate the token, for instance, via a call to one or more of theauthentication server (e.g., authenticate system 621) and authorizationserver (e.g., access system 623), or using a public key corresponding toa private key with which the authentication and/or authorization serversigned the access token. Alternatively, in some circumstances, anyone(e.g., authorized user, rogue user) holding the access token may gainaccess to the protected resource. To alleviate such issues,communication of the access token may be secured via TLS. Centralizedvalidation of access tokens may also mitigate the chances of a rogueuser gaining access to a protected resource (i.e., man-in-the-middleattack). Some non-limiting examples of tokens (e.g., access tokens,authentication tokens) may comprise bearer tokens, hash-basedauthentication code (HMAC) tokens, and RSA-SHA1 tokens using RSAprivate/public keypairs. In some cases, a token may comprise one or moreof unique string values, hashed values, a cryptographic hash functionand a secret cryptographic key, attributes information, etc., issued bya server, such as an authentication server (e.g., authenticate system621).

The identity infrastructure may include one or more identity domains (oridentity providers) and one or more identity infrastructure elements.The one or more identity domains (e.g., identity domain associated withIAM module 416-a) may further comprise one or more identity domainelements, where the one or more identity domain elements may comprisehardware (e.g., servers, computing devices or platforms, etc.), software(e.g., a cloud service), or a combination thereof. For example, in FIG.6 , the identity infrastructure 600 is associated with an identitydomain and comprises an attributes system 626, an access system 623, anauthenticate system 621, and app(s) 620. In some cases, the attributessystem 626, the access system 623, and/or the authenticate system 621may be embodied in hardware, software, or a combination thereof. By wayof non-limiting example, the one or more identity infrastructureelements installed in the identity infrastructure may include one ormore of servers, routers, datastores, identity stores comprising one ormore databases of authentication information, policy enforcement pointsfor enforcing authorization rules (e.g., shown as access system 623 inFIG. 6 ), authentication points for determining user identity (e.g.,shown as authenticate system 621 in FIG. 6 ), proxy devices (optional),policy decision points for evaluating authorization rules based at leastin part on identity session attributes, and protected resources (e.g.,applications or apps, such as app(s) 620).

In some examples, a policy decision point (PDP) is a system entity orcomponent of a policy-based access control system that may makeauthorization decisions for itself or alternatively, for other systementities that request such decisions. For instance, a PDP may determinewhether or not to authorize a user's request based on availableinformation (e.g., attributes, such as identity session attributes)and/or applicable security policies. In some cases, a PDP may examine arequest to access a resource (e.g., an application or app, such as amobile app, web-based app, etc.) and compare said request to the policythat applies to requests for accessing that resource (i.e., to determinewhether the requestor, such as a user, should be granted access).Additionally, or alternatively, the identity infrastructure may compriseat least one authorizing agent, also referred to as an enforcing agent,for interpreting identity session information and evaluating accessrules. In other words, the authorizing or enforcing agent may enforceaccess control for protected resources, such as app(s) 625, in theidentity infrastructure. In some embodiments, the identity session andidentity data may be associated with the identity session information.Further, the authorizing or enforcing agents may be realized usinghardware, firmware, software or a combination thereof.

In some cases, an identity provider (or identity domain) may refer to aconstruct for managing one or more users and roles, integrationstandards, external identities, and secure application integrationthrough single sign-on (SSO) configuration. In some aspects, an identitydomain/provider may control the authentication and authorization ofusers who can sign into a service, and the features they can access inrelation to the service. In some examples, the service may be a cloudservice. In other cases, the service may be an on-premises service. Insome circumstances, the identity infrastructure for an enterprise maycomprise multiple identity domains/providers, and each identity domainmay comprise multiple services. In other words, users of differentidentity domains/providers may be granted access to different services,applications, resources, etc., based on the services associated witheach identity provider. Furthermore, users in an identity provider mayalso be granted different levels of access to each service associatedwith the identity provider. As used herein, the terms “identitydomains”, “identity providers”, and “IAM systems” may be usedinterchangeably throughout the disclosure.

In some cases, an enterprise or organization may utilize one or moreidentity providers, such as an on-premises identity provider and one ormore cloud-based identity providers. In such cases, the enterprise mayalso need to manage identity (e.g., of their employees, their customers,etc.) in multiple locations (e.g., geographic locations, networklocations, or a combination). Businesses are increasingly using multiplecloud services (e.g., Amazon Web Services (AWS) provided by Amazon,Inc., of Seattle, WA, Azure AD provided by Microsoft, Corp., of Redmond,WA, Google Cloud Platform (GCP) provided by Alphabet, Inc., of MountainView, CA), each of which use unique, built-in identity systems. Further,a business or enterprise may wish to migrate applications and/oridentity information to the cloud with minimal changes to the apps, howusers interact with the apps, etc. For instance, an enterprise using alegacy IAM system (e.g., not cloud based) may wish to migrate useraccounts from the legacy IAM system to the cloud-based IAM system.However, the legacy IAM system may currently be used to secure access toan application (e.g., an on-premises hosted application). According toaspects of this disclosure, an enterprise may migrate their useridentities (or identity information) from the legacy IAM system to a newIAM system (e.g., cloud-based identity system), such that user access tothe application is now provided by the new IAM system, while at the sametime minimizing user disruption and/or changes to user experience (i.e.,how users interact with the application). In some aspects, the presentdisclosure also helps minimize the cost, time, and/or resourcesassociated with rewriting the application to ensure compatibility withthe new IAM system. As described in further detail below, the discoverymodule can be used to analyze the identity dependencies, authenticationand authorization requirements, etc., in the identity infrastructure todetermine the type of information required by the app to grant access toits resource, which may help optimize the migration process.

Turning now to FIG. 1 , which illustrates a system 100 configured foranalyzing authentication and authorization requirements in an identityinfrastructure, according to various aspects of the disclosure. In someimplementations, system 100 may include one or more computing platforms102. Computing platform(s) 102 may be configured to communicate vianetwork 150 with one or more remote platforms 104 according to aclient/server architecture, a peer-to-peer architecture, and/or otherarchitectures. Remote platform(s) 104 may be configured to communicatewith other remote platforms via computing platform(s) 102 and/oraccording to a client/server architecture, a peer-to-peer architecture,and/or other architectures. Users may access system 100 via remoteplatform(s) 104. In some examples, a remote platform 104 may be referredto as a client computing platform, a user equipment (UE), a user device,or a computing device, and these terms may be used interchangeablythroughout the disclosure. Alternatively, the remote platform 104 maycomprise a server (e.g., a webserver hosting a third-party application).In one non-limiting example, the computing platform 102 may be similaror substantially similar to the webserver 415 (e.g., webserver 415-a inFIG. 4A).

Computing platform(s) 102 may be configured by machine-readableinstructions 106. Machine-readable instructions 106 may include one ormore instruction modules. The instruction modules may include computerprogram modules. The instruction modules may include one or more ofrequest interception module 108, request capture module 110,transmission identifying module 112, response interception module 114,analysis display module 116, request transformation module 118, and/orother instruction modules.

Request interception module 108 may be configured to intercept a firstrequest to access an application in the identity infrastructure. Thefirst request may include a first request to a webserver. In someexamples, the webserver may include at least one of an APACHE server, anINTERNATIONAL BUSINESS MACHINES (IBM) HTTP server, an ORACLE HTTPserver, and a NGINX server. It should be noted that the examples ofwebserver(s) listed above are not intended to be limiting, and thesystem 100 of the present disclosure may be configured to interceptrequests to other types of webservers known and/or contemplated in theart.

For instance, FIG. 4B shows a UE 475-b transmitting an app request(operation 401) to access an app 420-b. In this case, the first request(or app request) to access the app 420-b is intercepted at, and capturedby, the webserver 415-b.

Request capture module 110 may be configured to capture a second requestto access the application. The second request may include a secondrequest to the webserver. The second request may include a modifiedversion of the first request, where the first request is modified toinclude one or more identity dependencies received from an identity andaccess management system (IAM system). For instance, as shown in FIG.4B, the webserver 415-b comprises an optional IAM module 416-b and adiscovery module 417-b, where each of the IAM module 416-b and thediscovery module 417-b are embodied in hardware, software, or acombination thereof. Furthermore, the webserver 415-b captures a secondrequest (shown as capture modified app request 404) to access the app420-b. In some embodiments, the captured app request (operation 402) maybe modified (operation 403). The webserver 415-b then captures themodified app request (operation 404). Thus, in some embodiments, thesecond request includes a modified version of the first request, wherethe second request includes one or more identity dependencies receivedfrom the IAM module 416-b.

Transmission identifying module 112 may be configured to identify atransmission of one or more of the second request (i.e., modified apprequest) and the first request (i.e., unmodified app request) to theapplication. For example, the webserver 415-b may transmit app request(operation 406) to the app 420-b and the transmission identifying module112 (not shown in FIG. 4B) may identify said transmission. As notedabove, the IAM module (e.g., IAM module 416-b) may be optional in someembodiments. For example, in FIG. 5 , the webserver 515 does not includethe IAM module, in which case the webserver 515 captures the app request(operation 502) and transmits the unmodified app request to the app 520in operation 503.

Response interception module 114 may be configured to intercept aresponse (e.g., from the application, from another entity, such as theIAM module), based at least in part on the transmission. For example, inFIG. 4B, the app 420-b transmits an app response (operation 407), andthe webserver 415-b intercepts and captures this app response (operation408). In some other cases, the response may include blocking therequest. In one non-limiting example, the IAM module 416-b may block therequest (e.g., modified app request, unmodified app request) fromreaching the app 420-b. In other cases, for instance, when the IAMmodule is not present, the app 420-b may transmit an app response, wherethe app response indicates a denial or rejection of the app request(i.e., prevents the user from accessing the app). In such cases, aswell, the discovery module captures and analyzes the response beforerelaying it to the user.

Analysis display module 116 may be configured to display, via at leastone interface, an analysis of one or more of the first request, themodified version of the first request (i.e., the second request), andthe response. The at least one interface may include one or more of agraphical user interface (GUI) and an application programming interface(API). By way of non-limiting example, the analysis may includedetermining at least one of requirements for application authentication,requirements for application authorization, one or more identityprotocols utilized by the application, one or more identity techniquesutilized by the application, whether application meets predeterminedcompliance standards, and whether any user-defined security requirementshave been implemented.

By way of non-limiting example, the one or more identity protocols andtechniques may include one or more of Security Assertion Markup Language(SAML), OpenID Connect (OIDC), Kerberos, and header-basedauthentication.

By way of non-limiting example, the predetermined compliance standardsmay include at least one of Payment Card Industry (PCI) standards,Health Insurance Portability and Accountability Act of 1996 (HIPAA)regulations, System and Organization Controls (SOC 2), and the use ofTransport Layer Security (TLS).

By way of non-limiting example, the identity dependencies may includethe requirements for application authentication and/or the requirementsfor application authorization. The requirements for applicationauthentication and authorization may include multi-factor authentication(MFA) and rules governing access of application resources. As usedherein, the term “application resources” may refer to resources (e.g.,files, documents, static content, images, etc.) associated with anapplication (e.g., app 420-b). In some examples, at least one of theidentity dependencies and the requirements for applicationauthentication and authorization may include one or more differencesbetween the second request and the first request. In some cases, the oneor more differences between the second request (i.e., modified apprequest) and the first request (i.e., unmodified app request) mayinclude at least one of custom HTTP headers, addition of custom cookies,and modification of one or more attributes in one or more of the firstrequest and the second request.

By way of non-limiting example, the MFA information may include one ormore of a username, a password, biometrics information (e.g., voicerecognition, facial recognition, iris scan, retina scan, fingerprint, toname a few non-limiting examples), and single sign-on (SSO) policies.

In some embodiments, the predetermined compliance standards may includeat least one of regulatory standards and customer-defined securityrequirements.

In some cases, the application may include a plurality of applications.In some cases, at least some of the plurality of applications mayinclude different applications.

By way of non-limiting example, the migration from a legacy identity andaccess management (IAM) system to a new IAM system may include using athird-party system to pass from the legacy IAM system to the new IAMsystem one or more of the (1) identity dependencies, (2) requirementsfor application authentication and authorization, (3) one or moreidentity protocols utilized by the application, (4) one or more identitytechniques utilized by the application, (5) predetermined compliancestandards, and (6) user-defined security requirements. Other types ofinformation may be passed between the legacy and the new IAM systemduring migration, and the examples listed herein are not intended to belimiting.

Request transformation module 118 may be configured to transform thesecond request (e.g., modified app request) from a first format to asecond format. Additionally, or alternatively, the requesttransformation module 118 may be configured to transform the firstrequest (i.e., unmodified app request) from a first format to a secondformat, where the second format is associated with the second request(i.e., modified app request).

By way of non-limiting example, the second format may be different thanthe first format and may include one or more of request headers (e.g.,HTTP request headers), response headers (e.g., HTTP response headers),request bodies, response bodies, request methods, response methods, andcookies. In some examples, the headers (e.g., HTTP headers) in an apprequest may be referred to as request headers, while the headers (e.g.,HTTP headers) in an app response may be referred to as response headers.Besides HTTP headers, the app request and app response may furtherinclude a request body and a response body, respectively. In some cases,the app request may include an indication of a request method, and theapp response may include an indication of a response method.Furthermore, one or more of the app request and the app response mayalso include one or more cookies.

In some cases, one or more request headers included in the original apprequest may be modified. Additionally, or alternatively, one or morerequest headers (e.g., HTTP headers) may be added to the original apprequest during modification. For example, after receiving the apprequest (401), the legacy IAM module (or alternatively, the webserver415-b) may modify one or more HTTP headers included in the app request,add one or more HTTP headers to the app request, or a combinationthereof. In other words, one or more HTTP headers may be modified and/oradded while transforming the first request from the first format to thesecond format. In some embodiments, the cookies may also include or moremodified HTTP cookies, HTTP cookies that have been added to the originalapp request, or a combination thereof. That is, one or more HTTP cookiesmay be modified and/or added while transforming the first request fromthe first to the second format. Similarly, in some cases, the requestand response bodies may include one or more of modifying and adding HTTPrequest bodies (or alternatively, HTTP request values). In onenon-limiting example, one or more HTTP request bodies (or values) in arequest body may be modified and/or one or more HTTP request bodies (orvalues) may added to the request body while transforming the firstrequest from the first to the second format. In another example, one ormore HTTP request bodies (or values) in a response body may be modifiedand/or added. In some embodiments, the request and response methods mayinclude an HTTP request method.

In some implementations, by way of non-limiting example, the identitydependencies may include identity attributes received from an externalattribute source, request headers, response headers, request bodies,response bodies, request methods, response methods, and cookies. In someimplementations, by way of non-limiting example, the identity attributesmay include one or more of a first name, a last name, an email address,group membership information, a role, a job title, a username, a phonenumber, a residential address, an employer department, a uniqueidentifier or ID (e.g., an employee identification number, a socialsecurity number or SSN, or any other applicable unique identificationnumber). In some implementations, by way of non-limiting example, theexternal attribute source may include one or more of a lightweightdirectory access protocol (LDAP) application protocol, a database, and aweb service. Other types of external attribute sources known in the artare contemplated in different embodiments and the examples listed hereinare not intended to limit the scope or spirit of the disclosure.

In some implementations, the HTTP headers may include custom HTTPheaders (e.g., “X-Username: j doe” or “X-Groups: [“admins”,“executives”]”). In some examples, the custom HTTP headers may includeat least one of a username and a group. For instance, the custom HTTPheaders may comprise one or more application user attributes for one ormore users, where the one or more application user attributes areselected from a group consisting of a first name, a last name, an emailaddress, group membership information, a role, a title, and a username.

In some implementations, the HTTP cookies may include custom HTTPcookies (e.g., “Cookie: username=jdoe; groups=[“admins”,“executives”]”). In some cases, the custom HTTP cookies may comprise oneor more of a username, a unique identifier (e.g., SSN, employeeidentification number, etc.), a group, and an encrypted value.

In some implementations, by way of non-limiting example, the HTTPrequest method may include at least one of a GET method, a HEAD method,a POST method, a PUT method, a DELETE method, a CONNECT method, a TRACEmethod, and a PATCH method. In some implementations, by way ofnon-limiting example, the HTTP response headers may include statuscodes, redirect locations, and query parameters. In someimplementations, the user-defined security requirements may include atleast one of MFA and a zero-trust security model.

In some implementations, the analyzing authentication and authorizationrequirements in the identity infrastructure may include analyzingauthentication and authorization requirements in the identityinfrastructure for migration from a first IAM system (e.g., legacy IAMsystem) to a second IAM system (e.g., new IAM system). In someimplementations, by way of non-limiting example, the new IAM system mayinclude an IAM system that comprises or supports a standard identityprotocol and/or MFA. In some implementations, by way of non-limitingexample, the standard identity protocol may include at least one ofOIDC, SAML, and WebAuthn. The new IAM system may or may not be supportedby a third-party, where the third-party includes a vendor.

In some implementations, computing platform(s) 102, remote platform(s)104, and/or external resources 120 may be operatively linked via one ormore electronic communication links. For example, such electroniccommunication links may be established, at least in part, via thenetwork 150, such as the Internet and/or other networks. It will beappreciated that this is not intended to be limiting, and that the scopeof this disclosure includes implementations in which computingplatform(s) 102, remote platform(s) 104, and/or external resources 120may be operatively linked via some other communication media.

A given remote platform 104 may include one or more processorsconfigured to execute computer program modules. The computer programmodules may be configured to enable an expert or user associated withthe given remote platform 104 to interface with system 100 and/orexternal resources 120, and/or provide other functionality attributedherein to remote platform(s) 104. By way of non-limiting example, agiven remote platform 104 and/or a given computing platform 102 mayinclude one or more of a server, a desktop computer, a laptop computer,a handheld computer, a tablet computing platform, a NetBook, aSmartphone, and/or other computing platforms.

External resources 120 may include sources of information outside ofsystem 100, external entities participating with system 100, and/orother resources. In some implementations, some or all of thefunctionality attributed herein to external resources 120 may beprovided by resources included in system 100.

Computing platform(s) 102 may include electronic storage 122, one ormore processors 124, and/or other components. Computing platform(s) 102may include communication lines, or ports to enable the exchange ofinformation with a network and/or other computing platforms.Illustration of computing platform(s) 102 in FIG. 1 is not intended tobe limiting. Computing platform(s) 102 may include a plurality ofhardware, software, and/or firmware components operating together toprovide the functionality attributed herein to computing platform(s)102. For example, computing platform(s) 102 may be implemented by acloud of computing platforms operating together as computing platform(s)102.

Electronic storage 122 may comprise non-transitory storage media thatelectronically stores information. The electronic storage media ofelectronic storage 122 may include one or both of system storage that isprovided integrally (i.e., substantially non-removable) with computingplatform(s) 102 and/or removable storage that is removably connectableto computing platform(s) 102 via, for example, a port (e.g., a USB port,a firewire port, etc.) or a drive (e.g., a disk drive, etc.). Electronicstorage 122 may include one or more of optically readable storage media(e.g., optical disks, etc.), magnetically readable storage media (e.g.,magnetic tape, magnetic hard drive, floppy drive, etc.), electricalcharge-based storage media (e.g., EEPROM, RAM, etc.), solid-statestorage media (e.g., flash drive, etc.), and/or other electronicallyreadable storage media. Electronic storage 122 may include one or morevirtual storage resources (e.g., cloud storage, a virtual privatenetwork, and/or other virtual storage resources). Electronic storage 122may store software algorithms, information determined by processor(s)124, information received from computing platform(s) 102, informationreceived from remote platform(s) 104, and/or other information thatenables computing platform(s) 102 to function as described herein.

Processor(s) 124 may be configured to provide information processingcapabilities in computing platform(s) 102. As such, processor(s) 124 mayinclude one or more of a digital processor, an analog processor, adigital circuit designed to process information, an analog circuitdesigned to process information, a state machine, and/or othermechanisms for electronically processing information. Althoughprocessor(s) 124 is shown in FIG. 1 as a single entity, this is forillustrative purposes only. In some implementations, processor(s) 124may include a plurality of processing units. These processing units maybe physically located within the same device, or processor(s) 124 mayrepresent processing functionality of a plurality of devices operatingin coordination. Processor(s) 124 may be configured to execute modules108, 110, 112, 114, 116, and/or 118, and/or other modules (e.g., IAMmodule(s) 416, discovery module(s) 417 in FIGS. 4A-D; IAM module 516,discovery module 517 in FIG. 5 ). Processor(s) 124 may be configured toexecute modules 108, 110, 112, 114, 116, and/or 118, and/or othermodules by software; hardware; firmware; some combination of software,hardware, and/or firmware; and/or other mechanisms for configuringprocessing capabilities on processor(s) 124. As used herein, the term“module” may refer to any component or set of components that performthe functionality attributed to the module. This may include one or morephysical processors during execution of processor readable instructions,the processor readable instructions, circuitry, hardware, storage media,or any other components. In other words, any of the modules describedherein and elsewhere throughout the disclosure may be embodied inhardware, software, or a combination thereof.

It should be appreciated that although modules 108, 110, 112, 114, 116,and/or 118 are illustrated in FIG. 1 as being implemented within asingle processing unit, in implementations in which processor(s) 124includes multiple processing units, one or more of modules 108, 110,112, 114, 116, and/or 118 may be implemented remotely from the othermodules. The description of the functionality provided by the differentmodules 108, 110, 112, 114, 116, and/or 118 described below is forillustrative purposes, and is not intended to be limiting, as any ofmodules 108, 110, 112, 114, 116, and/or 118 may provide more or lessfunctionality than is described. For example, one or more of modules108, 110, 112, 114, 116, and/or 118 may be eliminated, and some or allof its functionality may be provided by other ones of modules 108, 110,112, 114, 116, and/or 118. As another example, processor(s) 124 may beconfigured to execute one or more additional modules that may performsome or all of the functionality attributed below to one of modules 108,110, 112, 114, 116, and/or 118.

FIGS. 2A through 2E illustrate methods 200-a through 200-e,respectively, for analyzing authentication and authorizationrequirements in an identity infrastructure, according to various aspectsof the present disclosure. The operations of method(s) 200 presentedbelow are intended to be illustrative. In some implementations,method(s) 200 may be accomplished with one or more additional operationsnot described, and/or without one or more of the operations discussed.Additionally, the order in which the operations of methods 200-a through200-e are illustrated in FIGS. 2A-E and described below is not intendedto be limiting.

In some implementations, method(s) 200 may be implemented in one or moreprocessing devices (e.g., a digital processor, an analog processor, adigital circuit designed to process information, an analog circuitdesigned to process information, a state machine, and/or othermechanisms for electronically processing information). The one or moreprocessing devices may include one or more devices executing some or allof the operations of method(s) 200 in response to instructions storedelectronically on an electronic storage medium. The one or moreprocessing devices may include one or more devices configured throughhardware, firmware, and/or software to be specifically designed forexecution of one or more of the operations of method(s) 200.

FIG. 2A illustrates a method 200-a, according to various aspects of thedisclosure.

A first operation 202 may include intercepting, at a server (e.g.,webserver 415-a, webserver 415-b), a first request to access anapplication (e.g., app 420-a, app 420-b) in the identity infrastructure.For instance, in FIG. 4B, the UE 475-b transmits app request (operation401) and the webserver 415-b captures the app request (operation 402).First operation 202 may be performed by one or more hardware processorsconfigured by machine-readable instructions including a module that isthe same as or similar to request interception module 108, in accordancewith one or more implementations.

A second operation 204 may include capturing a second request to accessthe application. The second request may include a modified version ofthe first request, where the first request has been modified to includeone or more identity dependencies received from an IAM system. Forinstance, in FIG. 4B, the IAM module 416-b modifies the app request(operation 403), which is then subsequently captured (operation 404) bythe webserver 415-b. Second operation 204 may be performed by one ormore hardware processors configured by machine-readable instructionsincluding a module that is the same as or similar to request capturemodule 110, in accordance with one or more implementations.

A third operation 206 may include identifying a transmission of thesecond request to the application. For instance, in FIG. 4B, thediscovery module 417-b identifies a transmission of the second requestfrom the webserver 415-b to the app 420-b, where the second requestcomprises a modified version of the first request. Third operation 206may be performed by one or more hardware processors configured bymachine-readable instructions including a module that is the same as orsimilar to transmission identifying module 112, in accordance with oneor more implementations.

A fourth operation 208 may include intercepting a response from theapplication, based at least in part on the transmission. For instance,in FIG. 4B, the discovery module 417-b (or another module of thewebserver 415-b) intercepts the app response transmitted from the app420-b. FIG. 4B depicts this interception as capture app response 408, inaccordance with one or more implementations. Fourth operation 208 may beperformed by one or more hardware processors configured bymachine-readable instructions including a module that is the same as orsimilar to response interception module 114, in accordance with one ormore implementations.

A fifth operation 210 may include displaying, via at least oneinterface, an analysis of one or more of the first request, the modifiedversion of the first request (i.e., the second request), and theresponse. The analysis may include determining at least one ofrequirements for application authentication, requirements forapplication authorization, one or more identity protocols utilized bythe application (e.g., app 420-b in FIG. 4B), one or more identitytechniques utilized by the application, whether application meetspredetermined compliance standards, and whether any user-definedsecurity requirements have been implemented. Fifth operation 210 may beperformed by one or more hardware processors configured bymachine-readable instructions including a module that is the same as orsimilar to analysis display module 116, in accordance with one or moreimplementations.

In some examples, the requirements for application authentication andauthorization may comprise MFA and rules governing access of resourcesassociated with the application. The MFA may comprise one or more ausername, password, biometric information (e.g., fingerprint, retina oriris scan, voice recognition, facial recognition), and Single Sign-On(SSO) policies.

FIG. 2B illustrates a method 200-b, according to various aspects of thepresent disclosure. Method 200-b implements one or more aspects of themethod 200-a, described above in relation to FIG. 2A.

At first operation 212, the method 200-b may include transforming thefirst request (e.g., unmodified app request intercepted at firstoperation 202 in FIG. 2A) from a first format to a second format. Thesecond format may be different than the first format and may include oneor more of request and response headers, request and response bodies,request and response methods, and cookies. First operation 212 of method200-b may be performed by one or more hardware processors configured bymachine-readable instructions including a module that is the same as orsimilar to request transformation module 118, in accordance with one ormore implementations.

As noted above, the request headers and response headers in the secondformat may comprise one or more modified HTTP headers, HTTP headers thathave been added, or a combination thereof. In some examples, the cookiesin the second format may include one or more modified HTTP cookies, HTTPcookies that have been added while transforming the first request fromthe first format to the second format, or a combination thereof. In someembodiments, the request bodies and response bodies in the second formatmay comprise one or more modified HTTP request bodies, HTTP requestvalues that have been added, HTTP request bodies that have been added,or a combination thereof. In some embodiments, the request methods andresponse methods in the second format may comprise an HTTP requestmethod.

FIG. 2C illustrates a method 200-c, according to various aspects of thedisclosure.

A first operation 214 may include intercepting, at a server (e.g.,webserver 515), a first request to access an application (e.g., app 530)in the identity infrastructure. First operation 214 may be performed byone or more hardware processors configured by machine-readableinstructions including a module that is the same as or similar torequest interception module 108, in accordance with one or moreimplementations.

A second operation 216 may include transmitting, from the server, one ormore of the first request and a modified version of the first request tothe application. In some cases, the first request may be modified toinclude one or more identity dependencies received from an IAM system.Second operation 216 may be performed by one or more hardware processorsconfigured by machine-readable instructions including one or moremodules that are the same as or similar to request capture module 110and/or transmission identifying module 112, in accordance with one ormore implementations.

A third operation 218 may include intercepting, at the server, aresponse from the application, based at least in part on thetransmission. For instance, in FIG. 5 , the discovery module 517intercepts and captures the app response transmitted from the app 520 atoperation 505. Third operation 218 may be performed by one or morehardware processors configured by machine-readable instructionsincluding a module that is the same as or similar to responseinterception module 114, in accordance with one or more implementations.

A fourth operation 210 may include displaying, via at least oneinterface, an analysis of one or more of the first request, the modifiedversion of the first request, and the response. The analysis may includedetermining at least one of requirements for application authentication,requirements for application authorization, one or more identityprotocols utilized by the application, one or more identity techniquesutilized by the application, whether application meets predeterminedcompliance standards, and whether any user-defined security requirementshave been implemented. Fourth operation 220 may be performed by one ormore hardware processors configured by machine-readable instructionsincluding a module that is the same as or similar to analysis displaymodule 116, in accordance with one or more implementations.

FIG. 2D illustrates a method 200-d, according to various aspects of thepresent disclosure. Method 200-b implements one or more aspects of themethod 200-c, described above in relation to FIG. 2C.

At first operation 222, the method 200-c may include capturing a secondrequest to access the application, where the second request comprisesthe modified version of the first request and includes one or moreidentity dependencies received from an IAM system. First operation 222of method 200-c may be performed by one or more hardware processorsconfigured by machine-readable instructions including a module that isthe same as or similar to request capture module 110, in accordance withone or more implementations.

FIG. 2E illustrates a method 200-e, according to various aspects of thepresent disclosure.

At first operation 224, the method 200-e may include transforming thefirst request (e.g., unmodified app request intercepted at firstoperation 214 in FIG. 2C) from a first format to a second format. Thesecond format may be different than the first format and may include oneor more of request and response headers, request and response bodies,request and response methods, and cookies. The second format may beassociated with the second request (i.e., modified version of the firstrequest). First operation 224 of method 200-e may be performed by one ormore hardware processors configured by machine-readable instructionsincluding a module that is the same as or similar to requesttransformation module 118, in accordance with one or moreimplementations.

FIG. 4A illustrates an example of a swim diagram 400-a depicting amethod for analyzing authentication and authorization requirements in anidentity infrastructure, in accordance with various aspects of thedisclosure.

The method described in relation to FIG. 4A may be implemented using acomputing platform (or computing system) that may be similar orsubstantially similar to the system 100 previously described in relationto FIG. 1 . In this example, the system performing the analyzing ofauthentication and authorization requirements is depicted as thewebserver 415-a, where the webserver 415-a comprises a discovery module417-a and an optional IAM module 416-a (shown as optional by the dashedlines). In some instances, the IAM module 416-a may be associated with alegacy IAM system.

The swim diagram 400-a depicts the three stages of the discoveryprocess, which include the capturing of application traffic (shown ascapture block 451-a), the analysis of the captured traffic (shown asanalyze block 452-a and analyze block 452-b), and the serving of aninterface for presenting the results of the analysis to a user (shown asserve block 453-a and serve block 453-b). In this example, the webserver415-a is electronically, logically, and/or communicatively coupled to aUE 405-a associated with a first user (e.g., discovery module user), aUE 475-a associated with a second user (e.g., application user), and anapp 420-a.

As shown in FIG. 4A, the operations associated with the capture block451-a are performed between the application user's UE 475-a, thewebserver 415-a, and the app 420-a. Additionally, the operationsassociated with analyze blocks 452-a and 452-b are performed by the UE405-a and the webserver 415-a. Lastly, the operations associated withserve blocks 453-a and 453-b are performed by the UE 405-a and thewebserver 415-b. FIGS. 4B-4D provide a more detailed view of thecapturing block 451-a, the analyze blocks 452, and the serving blocks453, respectively.

FIG. 4B illustrates an example of a swim diagram 400-b depicting therequest and response capturing by a discovery module 417-b of awebserver 415-b, according to various aspects of the disclosure.Specifically, but without limitation, FIG. 4B depicts the variousoperations associated with capture block 451-b, where the capture block451-b is similar or substantially similar to the capture block 451-a inFIG. 4A. The operations described in relation to FIG. 4B may beperformed by one or more of a UE 475-b associated with an applicationuser, the webserver 415-b, the discovery module 417-b, the IAM module416-b, and the app 420-b. In some embodiments, the IAM module 416-b maybe optional (shown as optional by the dashed lines).

In some embodiments, the discovery module 417-b may be installed on thewebserver 415-b, where the webserver 415-b may further comprise the IAMmodule 416-b (optional). In some cases, the IAM module 416-b may beassociated with a legacy IAM system (e.g., an IAM system used prior toidentity migration to a new or modern IAM system). Some non-limitingexamples of webservers include an APACHE webserver, an IBM HTTP Server(IHS), an ORACLE HTTP Server (OHS), and a NGINX webserver. It should benoted that other types of webservers are also contemplated in differentembodiments and the examples listed herein are not intended to limit thescope and/or spirit of the disclosure. As part of the capturing process,the discovery module 417-b detects one or more actions (e.g.,modifications) being performed on the application request by the IAMmodule 416-b of the webserver 415-b.

As seen in FIG. 4B, a first operation 401 comprises transmitting an apprequest from the UE 475-b. In some cases, the app request is interceptedat the webserver 415-b. In accordance with aspects of the presentdisclosure, the discovery module 417-b identifies one or more externalsystems (if any) that the app 420-b queries in order to determine one ormore of an authentication status and an authorization status for theuser associated with the UE 475-b. For example, in some circumstances,the IAM module 416-b loads identity attributes from at least oneexternal attribute source (e.g., a LDAP associated with the app 420-b, adatabase, a web service, another identity system, etc.). In someembodiments, the database comprises a relational database, althoughother types of databases are also contemplated in different embodiments.In some instances, the IAM module 416-b also modifies request headersincluded in the app request and/or adds request headers to the apprequest prior to forwarding the request to the app 420-b.

In some cases, at operation 402, the discovery module 417-b captures theapp request transmitted from the UE 475-b.

Next, at operation 403, the IAM module 416-b modifies the app request.In some instances, the IAM module adds one or more HTTP headers to theapp request, which may help identify the end-user to the application.

In some cases, at operation 404, the discovery module 417-b captures themodified app request, where the modified app request comprises amodified version of the original app request and includes one or moreidentity dependencies received from the legacy IAM system (or IAM module416-b). As noted above, the identity dependencies may comprise one ormore identity attributes received from an external attribute source,request headers, response headers, request bodies, response bodies,request methods, response methods, and/or cookies.

After capturing the modified app request (operation 404), the webserver415-b transmits one of the original/unmodified app request or themodified version of the app request to the app 420-b at operation 406.At operation 406, the method comprises transmitting an app response fromthe app 420-b to the webserver 415-b. Additionally, at operation 408,the method comprises capturing the app response by the discovery module417-b.

In some cases, the webserver 415-b relays the app response to the UE475-b at operation 409. In other cases, the IAM module 416-b may denythe application request to access the app 420-b, for instance, based onvalidating the user credentials provided by the application user and/ora risk assessment of the app request, to name two non-limiting examples.In one non-limiting example, the IAM module 416-b blocks the app request(e.g., original/unmodified app request received at operation 401) fromreaching the app 420-b. In such cases, capturing the response atoperation 408 comprises capturing a response from the IAM module 416-bblocking the app request from reaching the app 420-b. Additionally,relaying the app response at operation 409 comprises transmitting aresponse indicating that the app request was blocked from reaching theapp 420-b.

Turning now to FIG. 4C, which illustrates an example of a swim diagram400-c depicting the analysis of the captured application data by adiscovery module 417-c, according to various aspects of the disclosure.In some cases, the captured application data may include one or more ofthe app request, modified app request, and app response captured by thediscovery module. Specifically, but without limitation, FIG. 4C depictsthe various operations associated with analyze block 452-c, where theanalyze block 452-c corresponds to the analyze blocks 452-a and 452-b inFIG. 4A. The operations described in relation to FIG. 4C may beperformed by one or more of a UE 405-b associated with a discoverymodule user, the webserver 415-c, the discovery module 417-c, and theIAM module 416-c. In some embodiments, the IAM module 416-c may beoptional (shown as optional by the dashed lines).

In some embodiments, at operation 421, the discovery module 417-c of thewebserver 415-c receives a request to analyze the captured data, wherethe analyze request is received from the UE 405-b.

At operation 422, the discovery module 417-c transforms the captureddata into a format suitable for analysis. In some cases, the schema orformat used to represent application traffic (e.g., network trafficassociated with the app request, app response, etc.) comprises thefields of the HTTP requests. In some instances, application trafficrepresented using a standard schema or format facilitates analysis ofauthentication and authorization requirements in an identityinfrastructure. In one non-limiting example, the schema or format mayinclude the original request (e.g., unmodified app request, which may bean HTTP request, received from the application user), the modifiedrequest (e.g., modified version of the original request transmitted fromthe IAM module to the app), and the delta or difference between theoriginal and modified requests. For example, with reference to FIG. 4B,the schema/format may include the app request (transmitted at operation401 and captured at operation 402), the modified app request (modifiedat operation 403 and captured at operation 404), and one or moredifferences between the two. In some cases, the discovery module 417-cis configured to capture at least a portion (or all) of the fields ofthe HTTP request(s). In some cases, the schema or format may alsoinclude the HTTP response received from the app, for instance, the appresponse transmitted from the app 420-b at operation 407 and captured bythe discovery module 417-b at operation 408.

Further, the discovery module 417-c assesses one or more of theauthentication and authorization requirements for the app. Theassessment may include the discovery module 417-c performing an analysisof the information needed by the app in order to consume identity data.In one non-limiting example, the discovery module 417-c determines oneor more of the app's authentication requirements, authorizationrequirements, and attribute loading requirements. As used herein, theterm “authorization” refers to the rules governing access of applicationresources. Some non-limiting examples of application resources includefiles, documents, static content, images, etc., associated with theapplication. In some cases, a user (e.g., user associated with UE 475-bin FIG. 4B) may need to be authorized to access the application and/orresources associated with the application. Further, the term“authentication” refers to the process of confirming that an applicationuser is who they say they are (e.g., via a username/password, MFA,biometric information, such as fingerprint, voice recognition, retina oriris scan, facial recognition, single sign-on or SSO policies, to name afew non-limiting examples). In other words, the discovery module 417-cdetermines the type of information required by the IAM module 416-c tovalidate the identity of the application user, confirm that theapplication user is authorized to access the application, etc., beforethe application user is granted access to the application. In someexamples, the discovery module 417-c may also analyze the userattributes required for the application to build its identity context(i.e., the context needed for the app to determine which user(s) it iscurrently interacting with, what permissions they should have within theapp, to name two non-limiting examples).

In some cases, the discovery module 417-c is configured to determine thetype of information required by an application (e.g., app 420-b) toassess whether an app request is considered authenticated andauthorized. Typical requirements include, but are not limited to, theaddition of custom HTTP headers (e.g., “X-Username: jdoe” or “X-Groups:[“admins”, “executives”]”) and HTTP cookies (e.g., “Cookie: usernameHdoe; groups=[“admins”, “executives”]”). In some embodiments, thediscovery module 417-c analyses one or more of HTTP request headers(e.g., standard and custom headers), HTTP cookies, request methods, HTTPrequest bodies, HTTP response headers (e.g., status codes, redirectlocations, query parameters), and/or HTTP response bodies that are usedto define the authentication and authorization requirements in theidentity infrastructure.

In some cases, the transformation process 422 performed by the discoverymodule 417-c comprises determining one or more differences between theoriginal request (i.e., app request before it is modified by the IAMmodule) and the final request (i.e., modified app request sent to theapp). In some instances, the legacy IAM module may modify the HTTPheaders (e.g., standard headers) received in the app request to generateone or more custom HTTP headers. Additionally, or alternatively, thelegacy IAM module may add one or more HTTP headers to the original apprequest, delete one or more HTTP headers included in the original apprequest, or a combination thereof. In such cases, the HTTP headersincluded in the modified app request may be referred to as “custom HTTPheaders”. In some cases, HTTP headers may be grouped according to theircontext. For instance, HTTP request headers may include informationabout the resource (e.g., file, document, URL path, etc.) to be fetched,or about the client requesting the resource. In some cases, HTTPresponse headers may include additional information about the response,for instance, its location or about the server providing the response.Representation headers may include information about the body of theresource, such as, but not limited to, its Multipurpose Internet MailExtensions (MIME) type, or encoding/compression applied to the body ofthe resource. Payload headers may include representation-independentinformation about payload data, including content length and/or theencoding used for transport. It should be noted that the types of HTTPrequest/response headers described herein are not intended to belimiting and other types of headers known in the art are contemplated indifferent embodiments.

In some examples, at operations 423 and 424, the discovery module 417-calso determines the identity protocol or technique (e.g., SAML, OIDC,Kerberos, header-based auth) being leveraged for applicationauthentication and authorization, respectively. Furthermore, atoperation 425, the discovery module 417-c validates the behavior of thelegacy IAM module 416-c against one or more of compliance and regulatorystandards, where the behavior comprises one or more of theauthentication behavior and authorization behavior. For instance, thediscovery module 417-c (or another module of the system 100) determinesif the app meets predetermined compliance and regulatory standards. Somenon-limiting examples of predetermined compliance standards comprise atleast one of regulatory standards and customer-defined securityrequirements. In some cases, the predetermined compliance standards mayinclude at least one of Payment Card Industry (PCI) Data SecurityStandard, Health Insurance Portability and Accountability Act (HIPAA)rules, System and Organization Controls (SOC2) compliance standard,and/or the use of Transport Layer Security (TLS). In some cases, theuser or customer defined security requirements may comprise determiningwhether at least one of MFA and a zero-trust security model is beingemployed for accessing the application.

At operation 429, the method comprises transmitting a response to the UE405-b, where the response includes the information determined atoperations 422-425. In some cases, the response is transmitted inresponse to receiving the analyze request at operation 421.

FIG. 4D illustrates an example of a swim diagram 400-d, according tovarious aspects of the disclosure. As seen, swim diagram 400-d depictsthe various operations of serving block 453-c, where serving block 453-ccorresponds to the serving blocks 453-a and 453-b described above. Insome cases, the discovery module 417-d is configured to serve the outputof the analysis (described in relation to FIG. 4C) to an end-user (e.g.,a discovery module user associated with UE 405-c). The operationsdepicted in swim diagram 400-d may be performed by one or more of the UE405-c, a webserver 415-d, an optional IAM module 416-d, and a discoverymodule 417-d. The UE 405-c may be similar or substantially similar toone or more of the UEs 405-a and 405-b described in relation to FIGS. 4Aand 4C, respectively. Additionally, the webserver 415-d, the IAM module416-d, and the discovery module 417-d may be similar or substantiallysimilar to the ones described in relation to FIGS. 4A-C. In someembodiments, the IAM module 416-d may be optional (shown as optional bythe dashed lines).

As shown in FIG. 4D, at operation 431, the webserver 415-d receives arequest to access an analysis dashboard from the UE 405-c. In somecases, the discovery module 417-d is configured to display an output ofthe analysis through an interface (e.g., GUI and/or an API) of the UE405-c, which enables the discovery module user to consume insights ofthe identity infrastructure. At operation 432, the discovery module417-d provides a visual response comprising an output of the analysis(described in relation to FIG. 4C) to the UE 405-c.

In some cases, at operation 433, UE 405-c transmits a request to ananalysis API associated with the discovery module 417-d. For example,the request may include a request to access additional information thatwas captured and/or analyzed by the discovery module during thecapturing and analysis processes described in relation to FIGS. 4B and4C. In some instances, at operation 434, the webserver 415-d transmitsan API response to the UE 405-c, where the API response comprises aresponse to the request received at operation 433. In some cases, theAPI response may comprise the response body, HTTP headers, cookies,and/or the HTTP status codes, although other types of information mayalso be included in the API response.

Thus, some aspects of the disclosure are directed to a visual interfaceand/or an API to provide an end-user with information related toauthentication and authorization behavior in the identityinfrastructure. Additionally, or alternatively, aspects of the presentdisclosure are directed to a system (e.g., system 100, webserver 415-d,discovery module 417-d) that can assist end-users with identifying thedifferent steps, procedures, etc., required to migrate an application(e.g., app 420-a) from a legacy IAM system (e.g., associated with legacyIAM module 416-d) to a new or modern IAM system. In some cases, theauthentication behavior may dictate how an application, such as app420-a in FIG. 4A, identifies a user. For example, the app 420-a mayidentify a user through the use of custom HTTP headers and customcookies. During the analysis process, the discovery module (e.g.,discovery module 417-c) identifies information related to, for instance,the HTTP request values utilized by the app to build its identitycontext. Furthermore, during the serving process, the discovery module417-d presents the information determined during the analysis process tothe discovery module user, which can assist the discovery module user inmigrating the application(s) to a new or modern IAM system. For example,the discovery module 417-d may display information related to the exactHTTP request values that are utilized by the application (e.g., app420-a) to build the identity context. Knowledge of these HTTP requestvalues can help optimize migration of the app to the new or modern IAMsystem. As an example, after migration, the system (e.g., system 100) ofthe present disclosure may interface with a new identity system (e.g.,OKTA, MICROSOFT AZURE, to name a few non-limiting examples) to loadidentity attributes and authenticate and authorize users. Furthermore,the system 100 may pass the same or similar HTTP request values (i.e.,as the ones provided before migration) to the application. Such a designmay allow application users of an enterprise/company to use the new ormodern IAM system for authentication and authorization (e.g., whileattempting to access the application), while minimizing the amount ofchanges to the application to ensure compatibility with the new/modernIAM system. Thus, in some aspects, the app is “unaware” of the migrationas it continues to receive the same or similar HTTP request values thatit received prior to migration. As such, the present disclosure mayfacilitate migration to a new or modern IAM system while minimizingchanges to the app and/or user experience.

FIG. 5 illustrates another example of a swim diagram 500 depicting therequest and response capturing by a discovery module 517 of a webserver515, according to various aspects of the disclosure. Specifically, butwithout limitation, FIG. 5 depicts the various operations associatedwith capture block 551, where the capture block 551 implements one ormore aspects of the capture block(s) 451-a and/or 451-b in FIGS. 4Aand/or 4B, respectively. The operations described in relation to FIG. 5may be performed by one or more of a UE 575 associated with anapplication user, the webserver 515, the discovery module 517, and theapp 520. In contrast to FIG. 4B, the webserver 515 in FIG. 5 does notinclude a legacy IAM module. In some instances, one or more of theoperations or steps performed by the discovery module 517 may besubstantially identical regardless of whether the legacy IAM module(e.g., IAM module 416-a in FIG. 4A) is present. Additionally, oralternatively, with regards to functionality, the discovery module 57may implement one or more aspects of the discovery module(s) 417 (e.g.,discovery module 417-a, discovery module 417-b).

In some embodiments, the discovery module 517 may be installed on thewebserver 515. Some non-limiting examples of webservers include anAPACHE webserver, an IBM HTTP Server (IHS), an ORACLE HTTP Server (OHS),and a NGINX webserver. It should be noted that other types of webserversare also contemplated in different embodiments and the examples listedherein are not intended to limit the scope and/or spirit of thedisclosure.

As seen in FIG. 5 , a first operation 501 comprises transmitting anapplication request from the UE 575. In some cases, the app request isintercepted at the webserver 515. In accordance with aspects of thepresent disclosure, the discovery module 517 identifies one or moreexternal systems (if any) that the application 520 queries in order todetermine one or more of an authentication status and an authorizationstatus for the user associated with the UE 575. For example, in somecircumstances, the app 520 (or alternatively, the webserver 515) loadsidentity attributes from at least one external attribute source (e.g., aLDAP associated with the app 520, a database, a web service, anotheridentity system, etc.). In some embodiments, the database comprises arelational database, although other types of databases are alsocontemplated in different embodiments. In some embodiments, thediscovery module 517 analyzes the app request, where analyzing the apprequest includes analyzing HTTP headers, cookies, bodies, etc., in theapp request to make determinations about the identity system(s) and/oridentity dependencies in place. As noted above, the identitydependencies may comprise one or more identity attributes received froman external attribute source (e.g., shown as attributes system 626 andLDAP 633 in FIG. 6 ), request headers, response headers, request bodies,response bodies, request methods, response methods, and/or cookies. Byway of non-limiting example, the identity attributes may comprise one ormore of an email address, a phone number, a residential address, a jobtitle, an employer department, and an employee ID. Typically, though notalways, when the legacy IAM module is not present, the app 520 isconfigured to load one or more user attributes that are produced as partof the authentication process (e.g., produced via SAML or OIDC).

In some embodiments, the discovery module 517 may also inspect the apprequest (i.e., received at operation 501) and/or the app response (i.e.,received at operation 504) to determine if an identity protocol (e.g.,OIDC, SAML, Simple and Protected GSSAPI Negotiation Mechanism or SPNEGO,KERBEROS, etc.) is being utilized. Additionally, or alternatively, thediscovery module 517 analyzes the app request to determine whether theapp 520 meets one or more predefined compliance standards. Somenon-limiting examples of compliance standards may include one or more ofregulatory standards and customer-defined security requirements,including at least one of PCI Data Security Standard, HIPAA rules, SOC2compliance standard, and/or the use of TLS.

In some examples, when there is no legacy IAM module present, the apprequest is not modified at the webserver 515 prior to transmission tothe app 520. As noted above, when the webserver (e.g., webserver 415-bin FIG. 4B) includes an IAM module, the IAM module may modify HTTPheaders in the app request and/or add new HTTP headers to the apprequest prior to forwarding the app request to the application.

In some cases, at operation 502, the discovery module 517 captures theapp request received from the UE 575. Next, at operation 503, thediscovery module 517 (or alternatively, the webserver 515) transmits theapp request to the app 520.

In some cases, the app 520 transmits an app response to the webserver515 at operation 504. At operation 505, the method comprises capturing,by the discovery module 517 of the webserver 515, the app response.

In some cases, at operation 506, the app response is transmitted fromthe webserver 515 to the UE 575. The discovery module 517 may analyzethe application traffic (e.g., app request, app response), where theanalyzing includes determining (1) if an identity protocol (e.g., OIDC,SAML, SPNEGO, KERBEROS, etc.) is being utilized, (2) whether the app 520meets predetermined regulatory/compliance standards, (3) one or morerequirements for application authentication and applicationauthorization, (4) one or more identity techniques utilized by the app520, and/or (5) whether any user-defined security requirements have beenimplemented in the identity infrastructure.

By way of non-limiting example, the requirements for applicationauthentication and authorization may comprise MFA and rules governingaccess of resources (e.g., documents, files, static content, images,strings, etc.) associated with the app 520. In some examples, the term“resource” may be used generally to describe an HTTP endpoint exposed bythe app 520. Specifically, but without limitation, the term “resource”may refer to a path of a uniform resource locator (URL). For example,while interacting with the app 520, a user may navigate across aplurality of resources (e.g., https://example.com/dashboard,https://example.com/admin, https://example.com/accounting, etc.), whereeach URL path/resource is associated with one or more additionalresources (e.g., images, files, etc.).

Turning now to FIG. 6 , which illustrates an example of an identityinfrastructure 600 comprising a discovery module 617, according tovarious aspects of the disclosure. In some examples, the discoverymodule 617 (or any of the other modules described in relation to FIG. 1) may be configured for analyzing authentication and authorizationrequirements in the identity infrastructure 600. In some cases, thisanalysis of the identity infrastructure 600 may begin by installing thediscovery module 617 on or near an existing identity infrastructureelement, such as the webserver 415-a in FIG. 4A. As used herein, adiscovery module may refer to an autonomous or semi-autonomous softwareentity that assesses application requests, application responses, and/ormodified application requests (if applicable) within an identityinfrastructure and presents an analysis of the same via an interface(e.g., GUI or API, to name two non-limiting examples) on a user device.

As noted above, identity information may comprise identity data,identity metadata, structure and/or contents of identity sessions, aswell as configuration and deployment information for software andhardware entities of an identity system/domain. In some cases, thediscovery module 617 may intercept and/or proxy an identity dataflow 615as it is relayed to any of the identity infrastructure elements (e.g.,authenticate system 621, access system 623, attributes system 626, risksystem 624, device system 622) for authentication, authorization,gathering identity attributes, etc. FIG. 6 depicts the discovery module617 intercepting 616 the networking traffic (or identity dataflow 615)in the identity infrastructure. In some examples, the various identityinfrastructure elements depicted in FIG. 6 may be associated with an IAMsystem, such as a new/modern IAM system utilized to control access tothe app 620 following migration. In some cases, the app 620 may be“unaware” of this migration and may continue to base its accessdecisions based on the HTTP request values, headers, cookies, HTTPrequest bodies, etc., it previously expected. In other cases, theidentity infrastructure elements shown in FIG. 6 may be associated witha legacy IAM system (i.e., IAM system utilized to control access to theapp 620 before migration).

In this example, a user is attempting to access a protected resource,such as an app 620. As shown, the process flow 600 may begin by alogin/request 601 from the user. Login/request 601 may comprisereceiving identity data, including one or more of a username, apassword, biometrics information (e.g., a fingerprint, iris scan, voiceinput, facial recognition), a unique identifier or pin, etc. In somecases, the login/request 601 may also include a request to access theapp 620. Following login, the user input may be relayed to any one ofthe runtime systems as an identity dataflow 615. In some cases, thediscovery module may intercept 616 the networking traffic (i.e., withinthe identity dataflow 615), where the intercepting comprises at leastcapturing the request to access the app 620. The discovery module mayalso determine which identity infrastructure elements are utilized, aswell as how they are utilized, to grant/deny user access to the app 620.

As seen, the identity dataflow 615 may be sent to one or more identityinfrastructure elements, such as an authenticate system 621, an accesssystem 623, an attributes system 626, a device system 622 (shown asoptional by the dashed lines), and/or a risk system 624 (optional)associated with an identity domain (e.g., a legacy IAM system). In somecases, the identity dataflow 615 may be sent to other systems notidentified herein. In some cases, the authenticate system 621 maysupport MFA 629, the access system 623 may support identity as a service(IDaaS) 631 for authorization, and the attributes system 626 may belinked or associated with a LDAP 633 for gathering identity attributes.In some implementations, the access system 623 may enforce decisionsabout authentication and authorization set by the IDaaS system 631.

In some embodiments, the discovery module 617 may determine at least oneof requirements for application authentication, requirements forapplication authorization, one or more identity protocols utilized bythe app 620, and one or more identity techniques utilized by the app620, based on the intercepting 616. In some implementations, thediscovery module 617 may also determine whether the app 620 meetspredetermined compliance or regulatory standards and/or whether anyuser-defined security requirements have been implemented in the identityinfrastructure 600. Additionally, or alternatively, the discovery module617 may also detect the configuration and behavior of the above identityinfrastructure elements, where the configuration may include identitydata and identity metadata stored within the identity infrastructureelements. Behavior may comprise identity operations performed by theelements of the identity infrastructure 600. In some cases, assessingthe authentication/authorization requirements in the identityinfrastructure 600 by the discovery module 617 may be based at least inpart on detecting and assessing one or more identity-centric operations,as described with respect to the identity data, identity metadata,identity dependencies received from an IAM system, and identityinfrastructure elements.

In some cases, the one or more identity-centric operations may comprisemodifying the app request to include one or more identity dependenciesreceived from an IAM system and transmitting the modified app request tothe app 620. As noted above, the identity dependencies may compriseidentity attributes received from an external attributes source (e.g.,attributes system 626 and LDAP 633). The identity-centric operations andbehavior may also comprise one or more of enforcing authentication rulesbased on an authentication performed by the user (e.g., login 601 andauthentication by authenticate system 621), granting or denying accessto a protected resource (e.g., based on the request to access the app620), and enforcing authorization rules (e.g., using access system 623).

In some embodiments, the identity dependencies received from the IAMsystem may also include one or more of request headers (e.g., HTTPrequest headers), response headers (e.g., HTTP response headers),request bodies, response bodies, request methods, response methods, andcookies. In some examples, the app request may be an example of a HTTPrequest and the response received from the app 620 may be an example ofa HTTP response. An HTTP request is made by a client (e.g., UE 575 inFIG. 5 ) to a named host, which is located on a server. The aim of therequest is to access a resource (e.g., app 620) on the server. In someexamples, to make the request, the client uses components of a URL,which includes the information needed to access the resource. In somecases, the HTTP request includes one or more of a request line, a seriesof HTTP headers or header fields, a message body (if needed). Therequest line, which may be the first line in the HTTP request message,may include a method (e.g., GET, POST, PUT, HEAD, DELETE, PATCH,OPTIONS, CONNECT, and/or a TRACE method), a path component of the URLfor the HTTP request, and a HTTP version number or specification.Additional information may be included in the request line in someembodiments, and the examples listed herein are not intended to belimiting. HTTP headers included in the request message may be used toprovide the recipient (e.g., app 620, IAM system, or another applicableentity) with information about the HTTP request message, the sender, andthe way in which the sender wants to communicate with the recipient. Insome cases, each HTTP header comprises a name and a value.

In some embodiments, the identity dependencies may also comprise therequirements for authentication and authorization. In someimplementations, the requirements for authentication and authorizationmay comprise one or more of modifying/adding HTTP headers, HTTP values,and HTTP cookies in the HTTP request, the HTTP response, or both. Insome embodiments, the modified HTTP headers and HTTP cookies may bereferred to as custom HTTP headers and custom HTTP cookies,respectively, to distinguish them from the headers and cookies includedin the original app request. In some cases, the custom HTTP headers maycomprise one or more application user attributes for the user associatedwith the login/request 601, where the one or more application userattributes are selected from a group consisting of a first name, a lastname, an email address, group membership information, a role, a title,and a username. In some cases, the custom HTTP cookies may comprise atleast one of a username, a unique identifier, an encrypted value, and agroup. As noted above, the discovery module 617 may be configured todetermine one or more differences between the information included inthe original app request and the modified app request sent to the app620. For example, the one or more differences may include thedifferences between the custom HTTP headers and the original HTTPheaders, the custom cookies and the original HTTP cookies, or acombination thereof. In some examples, the discovery module 617 alsodetermines if there are any differences in attributes between theoriginal HTTP request and the modified HTTP request.

In the example shown, the optional device system 622 may be linked orassociated with a device API 627, which may perform device verification,and the risk system 624 may be linked or associated with a risk API 637,which may retrieve a threat or risk score. In some embodiments, the riskAPI 637 and the device API 627 may link the risk system 624 and/ordevice system 622, respectively, to one or more applications (notshown), where the one or more applications may be third-partyapplications. In some cases, the one or more third party applicationsmay be executed or hosted on another server (not shown). For instance,the device system 622 may interact with a third-party deviceverification application by making an API call using device API 627. Thethird-party device verification application may then process theinformation (e.g., a phone number, mobile device identifier, such asInternational Mobile Equipment Identity (IMEI), Mobile EquipmentIdentifier (MEID), Electronic Serial Number (ESN), International MobileSubscriber Identity (IMSI), etc., and Media Access Control (MAC)address, to name a few non-limiting examples) received from the devicesystem 622 (via the device API 627) and relay a response (e.g., Verifiedor Not verified, 1 or 0, Yes or No, etc.) to the device system 622. Insome cases, the device system 622 may determine, from the response, ifthe user device associated with the login 601 is a recognized device oran unknown device. In some cases, the risk system 624 may also interactwith a third-party risk verification application via the risk API 637.In some embodiments, the third-party risk and verification applicationsmay be executed or hosted on the same or different third-partyserver(s). In some cases, device verification may serve as an addedlevel of security (i.e., in addition to a username and password, forinstance) and may be used to verify that the login/request 601 is comingfrom a recognized device (e.g., mobile device, laptop, computer, etc.)associated with an authorized user. In some cases, device verificationmay comprise transmitting a verification code over text (SMS), a phonecall, an app, etc., to a recognized device associated with the user. Thedevice system 622 may verify the device from which the login/request 601was received upon the user inputting the same verification code. In somecases, the threat or risk score may be associated with a perceived orestimated threat level (e.g., for a user's identity), and may be basedon one or more factors, including, but not limited to, time of day, dayof week, geographic data, and/or IP address. For instance, a higher riskscore may be assigned when the login 601 is during non-working hours(e.g., 3 AM) as compared to during working hours (e.g., 11 am). Inanother example, a lower risk score may be assigned when the login 601is from a known IP address as opposed to an unknown IP address. In yetanother example, a higher risk score may be assigned when the login 601is from a geographic region (e.g., city, state, country, etc.) that theuser has never logged in from before.

In some cases, the risk system 624 may authorize or flag the login 601based in part on comparing the retrieved risk or threat score to athreshold. In one non-limiting example, the login/request 601 to accessthe app 620 may be denied based on the risk score exceeding thethreshold (e.g., if it is determined that the user data is compromisedbased on validating one or more of the user identifier, the usercredentials information, and any other identity data for the user). Inanother example, the user requesting the login 601 may be prompted tochange their password (e.g., if the authentication policy states thatthe password should be updated every 3 months, 6 months, etc.) based onreceiving a link or code on a registered device. In this case, the usermay need to first click the link or input the code received on theirregistered device (e.g., a smartphone associated with the user) and thenproceed to update their password. The user may then restart the login601 process via the one or more runtime systems (e.g., authenticatesystem 621, access system 623, etc.). Alternatively, if the risk orthreat score is under a threshold, the login 601 may be successful and asession 634 may be initiated (e.g., the user device may display aWelcome Screen with one or more links to access different apps orresources, including app 620).

The discovery module 617 may monitor the identity dataflow as it passesthrough the various identity infrastructure elements or runtime systemsand determine the information used to establish an identity session 634and gain access to the app 620. In some cases, the discovery module 617may also identify where unsuccessful requests are routed to (e.g.,routed to attributes system 626 so that user password can be updated).In some cases, an identity session may refer to a temporary andinteractive information interchange between two or more communicatingdevices (e.g., a user device associated with login 601 and a serverhosting app 620). Further, an established session may be a prerequisitefor performing a connection-oriented communication. In some cases, asession may be initiated or established before data is transferred. Asdescribed above, initiation of identity session 634 may comprisedisplaying a successful login screen or welcome screen with one or morelinks to resources or apps authorized for use by the user, for instance,which may be indicative of a connection between the user device and theserver hosting the app 620.

It should be noted that the identity dataflow 615 may interact with anyof the runtime systems illustrated in FIG. 6 , and in any order. In someother cases, the identity dataflow 615 may interact with differentruntime systems in parallel (e.g., authenticate system 621 and devicesystem 622 simultaneously). In other cases, the identity dataflow 615may interact with the runtime systems in a first branch (e.g., the leftbranch in FIG. 6 ), followed by the runtime systems in the second branch(i.e., right branch). Either way, the discovery module 617 may detectthe behavior and configurations of the various identity infrastructureelements and report the same to a centralized server (e.g., system 100)or discovery module user based on intercepting 616 the identity dataflow615 within the identity infrastructure.

FIG. 3 illustrates a diagrammatic representation of one embodiment of acomputer system 300, within which a set of instructions can execute forcausing a device to perform or execute any one or more of the aspectsand/or methodologies of the present disclosure. The components in FIG. 3are examples only and do not limit the scope of use or functionality ofany hardware, software, firmware, embedded logic component, or acombination of two or more such components implementing particularembodiments of this disclosure. Some or all of the illustratedcomponents can be part of the computer system 300. For instance, thecomputer system 300 can be a general-purpose computer (e.g., a laptopcomputer) or an embedded logic device (e.g., an FPGA), to name just twonon-limiting examples.

Moreover, the components may be realized by hardware, firmware, softwareor a combination thereof. Those of ordinary skill in the art in view ofthis disclosure will recognize that if implemented in software orfirmware, the depicted functional components may be implemented withprocessor-executable code that is stored in a non-transitory,processor-readable medium such as non-volatile memory. In addition,those of ordinary skill in the art will recognize that hardware such asfield programmable gate arrays (FPGAs) may be utilized to implement oneor more of the constructs depicted herein.

Computer system 300 includes at least a processor 301 such as a centralprocessing unit (CPU) or a graphics processing unit (GPU) to name twonon-limiting examples. Any of the subsystems described throughout thisdisclosure could embody the processor 301. The computer system 300 mayalso comprise a memory 303 and a storage 308, both communicating witheach other, and with other components, via a bus 340. The bus 340 mayalso link a display 332, one or more input devices 333 (which may, forexample, include a keypad, a keyboard, a mouse, a stylus, etc.), one ormore output devices 334, one or more storage devices 335, and variousnon-transitory, tangible computer-readable storage media 336 with eachother and/or with one or more of the processor 301, the memory 303, andthe storage 308. All of these elements may interface directly or via oneor more interfaces or adaptors to the bus 340. For instance, the variousnon-transitory, tangible computer-readable storage media 336 caninterface with the bus 340 via storage medium interface 326. Computersystem 300 may have any suitable physical form, including but notlimited to one or more integrated circuits (ICs), printed circuit boards(PCBs), mobile handheld devices (such as mobile telephones or PDAs),laptop or notebook computers, distributed computer systems, computinggrids, or servers.

Processor(s) 301 (or central processing unit(s) (CPU(s))) optionallycontains a cache memory unit 302 for temporary local storage ofinstructions, data, or computer addresses. Processor(s) 301 areconfigured to assist in execution of computer-readable instructionsstored on at least one non-transitory, tangible computer-readablestorage medium. Computer system 300 may provide functionality as aresult of the processor(s) 301 executing software embodied in one ormore non-transitory, tangible computer-readable storage media, such asmemory 303, storage 308, storage devices 335, and/or storage medium 336(e.g., read only memory (ROM)). Memory 303 may read the software fromone or more other non-transitory, tangible computer-readable storagemedia (such as mass storage device(s) 335, 336) or from one or moreother sources through a suitable interface, such as network interface320. Any of the subsystems herein disclosed could include a networkinterface such as the network interface 320. The software may causeprocessor(s) 301 to carry out one or more processes or one or more stepsof one or more processes described or illustrated herein. Carrying outsuch processes or steps may include defining data structures stored inmemory 303 and modifying the data structures as directed by thesoftware. In some embodiments, an FPGA can store instructions forcarrying out functionality as described in this disclosure. In otherembodiments, firmware includes instructions for carrying outfunctionality as described in this disclosure.

The memory 303 may include various components (e.g., non-transitory,tangible computer-readable storage media) including, but not limited to,a random-access memory component (e.g., RAM 304) (e.g., a static RAM“SRAM”, a dynamic RAM “DRAM, etc.), a read-only component (e.g., ROM303), and any combinations thereof. ROM 303 may act to communicate dataand instructions unidirectionally to processor(s) 301, and RAM 304 mayact to communicate data and instructions bidirectionally withprocessor(s) 301. ROM 303 and RAM 304 may include any suitablenon-transitory, tangible computer-readable storage media. In someinstances, ROM 303 and RAM 304 include non-transitory, tangiblecomputer-readable storage media for carrying out any of the method(s)disclosed herein, including at least in relation to FIGS. 2-6 . In oneexample, a basic input/output system (BIOS) 306, including basicroutines that help to transfer information between elements withincomputer system 300, such as during start-up, may be stored in thememory 303.

Fixed storage 308 is connected bi-directionally to processor(s) 301,optionally through storage control unit 307. Fixed storage 308 providesadditional data storage capacity and may also include any suitablenon-transitory, tangible computer-readable media described herein.Storage 308 may be used to store operating system 309, EXECs 310(executables), data 311, API 312, and the like. Often, although notalways, storage 308 is a secondary storage medium (such as a hard disk)that is slower than primary storage (e.g., memory 303). Storage 308 canalso include an optical disk drive, a solid-state memory device (e.g.,flash-based systems), or a combination of any of the above. Informationin storage 308 may, in appropriate cases, be incorporated as virtualmemory in memory 303.

In one example, storage device(s) 335 may be removably interfaced withcomputer system 300 (e.g., via an external port connector (not shown))via a storage device interface 325. Particularly, storage device(s) 335and an associated machine-readable medium may provide nonvolatile and/orvolatile storage of machine-readable instructions, data structures,program modules, and/or other data for the computer system 300. In oneexample, software may reside, completely or partially, within amachine-readable medium on storage device(s) 335. In another example,software may reside, completely or partially, within processor(s) 301.

Bus 340 connects a wide variety of subsystems. Herein, reference to abus may encompass one or more digital signal lines serving a commonfunction, where appropriate. Bus 340 may be any of several types of busstructures including, but not limited to, a memory bus, a memorycontroller, a peripheral bus, a local bus, and any combinations thereof,using any of a variety of bus architectures. As an example, and not byway of limitation, such architectures include an Industry StandardArchitecture (ISA) bus, an Enhanced ISA (EISA) bus, a Micro ChannelArchitecture (MCA) bus, a Video Electronics Standards Association localbus (VLB), a Peripheral Component Interconnect (PCI) bus, a PCI-Express(PCI-X) bus, an Accelerated Graphics Port (AGP) bus, HyperTransport(HTX) bus, serial advanced technology attachment (SATA) bus, and anycombinations thereof.

Computer system 300 may also include an input device 333. In oneexample, a user of computer system 300 may enter commands and/or otherinformation into computer system 300 via input device(s) 333. Examplesof an input device(s) 333 include, but are not limited to, analpha-numeric input device (e.g., a keyboard), a pointing device (e.g.,a mouse or touchpad), a touchpad, a touch screen and/or a stylus incombination with a touch screen, a joystick, a gamepad, an audio inputdevice (e.g., a microphone, a voice response system, etc.), an opticalscanner, a video or still image capture device (e.g., a camera), and anycombinations thereof. Input device(s) 333 may be interfaced to bus 340via any of a variety of input interfaces 323 (e.g., input interface 323)including, but not limited to, serial, parallel, game port, USB,FIREWIRE, THUNDERBOLT, or any combination of the above.

In particular embodiments, when computer system 300 is connected tonetwork 350, computer system 300 may communicate with other devices,such as mobile devices and enterprise systems, connected to network 350.Communications to and from computer system 300 may be sent throughnetwork interface 320. For example, network interface 320 may receiveincoming communications (such as requests or responses from otherdevices) in the form of one or more packets (such as Internet Protocol(IP) packets) from network 330, and computer system 300 may store theincoming communications in memory 303 for processing. Computer system300 may similarly store outgoing communications (such as requests orresponses to other devices) in the form of one or more packets in memory303 and communicated to network 350 from network interface 320.Processor(s) 301 may access these communication packets stored in memory303 for processing.

Examples of the network interface 320 include, but are not limited to, anetwork interface card, a modem, and any combination thereof. Examplesof a network 350 include, but are not limited to, a wide area network(WAN) (e.g., the Internet, an enterprise network), a local area network(LAN) (e.g., a network associated with an office, a building, a campusor other relatively small geographic space), a telephone network, adirect connection between two computing devices, and any combinationsthereof. A network, such as network 350, may employ a wired and/or awireless mode of communication. In general, any network topology may beused.

Information and data can be displayed through a display 332. Examples ofa display 332 include, but are not limited to, a liquid crystal display(LCD), an organic liquid crystal display (OLED), a cathode ray tube(CRT), a plasma display, and any combinations thereof. The display 332can interface to the processor(s) 301, memory 303, and fixed storage308, as well as other devices, such as input device(s) 333, via the bus340. The display 332 is linked to the bus 340 via a video interface 322,and transport of data between the display 332 and the bus 340 can becontrolled via the graphics control 321.

In addition to a display 332, computer system 300 may include one ormore other peripheral output devices 334 including, but not limited to,an audio speaker and/or a printer. Such peripheral output devices may beconnected to the bus 340 via an output interface 324. Examples of anoutput interface 324 include, but are not limited to, a serial port, aparallel connection, a USB port, a FIREWIRE port, a THUNDERBOLT port,and any combinations thereof.

In addition, or as an alternative, computer system 300 may providefunctionality as a result of logic hardwired or otherwise embodied in acircuit, which may operate in place of or together with software toexecute one or more processes or one or more steps of one or moreprocesses described or illustrated herein. Reference to software in thisdisclosure may encompass logic, and reference to logic may encompasssoftware. Moreover, reference to a non-transitory, tangiblecomputer-readable medium may encompass a circuit (such as an IC) storingsoftware for execution, a circuit embodying logic for execution, orboth, where appropriate. The present disclosure encompasses any suitablecombination of hardware, software, or both.

Those of skill in the art will understand that information and signalsmay be represented using any of a variety of different technologies andtechniques. Those of skill will further appreciate that the variousillustrative logical blocks, modules, circuits, and algorithm stepsdescribed in connection with the embodiments disclosed herein may beimplemented as electronic hardware, computer software, or combinationsof both. To clearly illustrate this interchangeability of hardware andsoftware, various illustrative components, blocks, modules, circuits,and steps have been described above generally in terms of theirfunctionality. Whether such functionality is implemented as hardware orsoftware depends upon the particular application and design constraintsimposed on the overall system. Skilled artisans may implement thedescribed functionality in varying ways for each particular application,but such implementation decisions should not be interpreted as causing adeparture from the scope of the present disclosure.

The various illustrative logical blocks, modules, and circuits describedin connection with the embodiments disclosed herein may be implementedor performed with a general-purpose processor, a digital signalprocessor (DSP), an application specific integrated circuit (ASIC), afield programmable gate array (FPGA) or other programmable logic device,discrete gate or transistor logic, discrete hardware components, or anycombination thereof designed to perform the functions described herein.A general-purpose processor may be a microprocessor, but in thealternative, the processor may be any conventional processor,controller, microcontroller, or state machine. A processor may also beimplemented as a combination of computing devices, e.g., a combinationof a DSP and a microprocessor, a plurality of microprocessors, one ormore microprocessors in conjunction with a DSP core, or any other suchconfiguration.

The steps of a method or algorithm described in connection with theembodiments disclosed herein may be embodied directly in hardware, in asoftware module executed by a processor, a software module implementedas digital logic devices, or in a combination of these. A softwaremodule may reside in RAM memory, flash memory, ROM memory, EPROM memory,EEPROM memory, registers, hard disk, a removable disk, a CD-ROM, or anyother form of non-transitory, tangible computer-readable storage mediumknown in the art. An exemplary non-transitory, tangiblecomputer-readable storage medium is coupled to the processor such thatthe processor can read information from, and write information to, thenon-transitory, tangible computer-readable storage medium. In thealternative, the non-transitory, tangible computer-readable storagemedium may be integral to the processor. The processor and thenon-transitory, tangible computer-readable storage medium may reside inan ASIC. The ASIC may reside in a user terminal. In the alternative, theprocessor and the non-transitory, tangible computer-readable storagemedium may reside as discrete components in a user terminal. In someembodiments, a software module may be implemented as digital logiccomponents, such as those in an FPGA, once programmed with the softwaremodule.

It is contemplated that one or more of the components or subcomponentsdescribed in relation to the computer system 300 shown in FIG. 3 suchas, but not limited to, the network 350, processor 301, memory, 303,etc., may comprise a cloud computing system. In one such system,front-end systems such as input devices 333 may provide information toback-end platforms such as servers (e.g., computer systems 300) andstorage (e.g., memory 303). Software (i.e., middleware) may enableinteraction between the front-end and back-end systems, with theback-end system providing services and online network storage tomultiple front-end clients. For example, a software-as-a-service (SAAS)model may implement such a cloud-computing system. In such a system,users may operate software located on back-end servers through the useof a front-end software application such as, but not limited to, a webbrowser.

Although the present technology has been described in detail for thepurpose of illustration based on what is currently considered to be themost practical and preferred implementations, it is to be understoodthat such detail is solely for that purpose and that the technology isnot limited to the disclosed implementations, but, on the contrary, isintended to cover modifications and equivalent arrangements that arewithin the spirit and scope of the appended claims. For example, it isto be understood that the present technology contemplates that, to theextent possible, one or more features of any implementation can becombined with one or more features of any other implementation.

What is claimed is:
 1. A system configured for analyzing authenticationand authorization requirements in an identity infrastructure, the systemcomprising: one or more hardware processors configured bymachine-readable instructions to: intercept, at a server, a firstrequest to access an application in the identity infrastructure, whereinthe first request is received from a first user device; transmit, fromthe server, one or more of the first request and a modified version ofthe first request to the application; intercept, at the server, aresponse from the application, based at least in part on thetransmission; display, via at least one interface, an analysis of one ormore of the first request, the modified version of the first request,and the response, wherein the analysis comprises determining at leastone of: requirements for application authentication and authorization,one or more identity protocols utilized by the application, one or moreidentity techniques utilized by the application, whether applicationmeets predetermined compliance standards, and whether any user-definedsecurity requirements have been implemented; and capture a secondrequest to access the application, wherein the second request comprisesthe modified version of the first request and includes one or moreidentity dependencies received from an identity and access management(IAM) system; wherein the transmission comprises transmitting the secondrequest to the application; and wherein intercepting the responsecomprises intercepting the response from one of the IAM system or theapplication.
 2. The system of claim 1, wherein the identity dependenciescomprise one or more of identity attributes received from an externalattribute source, request and response headers, request and responsebodies, request and response methods, and cookies; and wherein the atleast one interface comprises one or more of a graphical user interfaceand an application programming interface.
 3. The system of claim 2,wherein, the identity attributes comprise one or more of an emailaddress, a phone number, a residential address, a job title, an employerdepartment, and an employee ID; the external attribute source compriseone or more of a lightweight directory access protocol (LDAP) associatedwith the application, a database, and a web service; the request andresponse headers comprise one or more of modifying and adding hypertexttransfer protocol (HTTP) headers; the cookies comprise or more ofmodifying and adding HTTP cookies; the request and response bodiescomprise one or more of modifying and adding HTTP request bodies; andthe request and response methods comprise an HTTP request method.
 4. Thesystem of claim 3, wherein, the identity dependencies comprise therequirements for authentication and authorization; the HTTP headerscomprise custom HTTP headers; the HTTP cookies comprise custom HTTPcookies; and the HTTP request method comprises at least one of a GETmethod, a HEAD method, a POST method, a PUT method, a DELETE method, aCONNECT method, a TRACE method, and a PATCH method.
 5. The system ofclaim 4, wherein at least one of the identity dependencies and therequirements for authentication and authorization comprises one or moredifferences between the second request and the first request, whereinthe one or more differences between the second request and the firstrequest include at least one of addition of the custom HTTP headers,addition of the custom HTTP cookies, and modification of one or moreattributes in one or more of the first request and the second request.6. A method for analyzing authentication and authorization requirementsin an identity infrastructure, the method comprising: intercepting, at aserver, a first request to access an application in the identityinfrastructure, wherein the first request is received from a first userdevice; transmitting, from the server, one or more of the first requestand a modified version of the first request to the application;intercepting, at the server, a response, based at least in part on thetransmission; displaying, via at least one interface, an analysis of oneor more of the first request, the modified version of the first request,and the response, wherein the analysis comprises determining at leastone of; requirements for application authentication and applicationauthorization, one or more identity protocols utilized by theapplication, one or more identity techniques utilized by theapplication, whether application meets predetermined compliancestandards, and whether any user-defined security requirements have beenimplemented; and capturing, by the server, a second request to accessthe application, wherein the second request comprises the modifiedversion of the first request and includes one or more identitydependencies received from an identity and access management (IAM)system; wherein the transmitting comprises transmitting the secondrequest to the application; and wherein intercepting the responsecomprises intercepting the response from one of the IAM system or theapplication.
 7. The method of claim 6, wherein the identity dependenciescomprise identity attributes received from an external attribute source,request headers, response headers, request bodies, response bodies,request methods, response methods, and cookies; and wherein the at leastone interface comprises one or more of a graphical user interface and anapplication programming interface.
 8. The method of claim 7, wherein,the identity attributes comprise one or more of an email address, aphone number, a residential address, a job title, an employerdepartment, and an employee ID; the external attribute source compriseone or more of a lightweight directory access protocol (LDAP) associatedwith the application, a database, and a web service; the request headersand response headers comprise one or more of modifying and addinghypertext transfer protocol (HTTP) headers; the cookies comprise one ormore of modifying and adding HTTP cookies; the request bodies andresponse bodies comprise one or more of modifying and adding HTTPrequest bodies; and the request methods and response methods comprise anHTTP method.
 9. The method of claim 8, wherein, the identitydependencies comprise the requirements for application authenticationand application authorization; the HTTP headers comprise one or more ofstatus codes, redirect locations, query parameters, and one or morecustom HTTP headers; the HTTP cookies comprise custom HTTP cookies; andthe HTTP method comprises at least one of a GET method, a HEAD method, aPOST method, a PUT method, a DELETE method, a CONNECT method, a TRACEmethod, and a PATCH method.
 10. The method of claim 9, wherein, therequirements for application authentication and authorization comprisemulti-factor authentication and rules governing access of resourcesassociated with the application; the multi-factor authenticationcomprises one or more of a username, a password, biometric information,and Single Sign-On (SSO) policies; the custom HTTP headers furthercomprise one or more application user attributes for one or more users,wherein the one or more application user attributes are selected from agroup consisting of a first name, a last name, an email address, groupmembership information, a role, a title, and a username; and the customHTTP cookies comprise at least one of a username and a group.
 11. Themethod of claim 8, wherein at least one of the identity dependencies andthe requirements for application authentication and authorizationcomprises one or more differences between the second request and thefirst request, wherein the one or more differences between the secondrequest and the first request include at least one of addition of thecustom HTTP headers, addition of the custom cookies, and modification ofone or more attributes in one or more of the first request and thesecond request.
 12. The method of claim 8, wherein, the one or moreidentity protocols and identity techniques utilized by the applicationcomprise one or more of, Security Assertion Markup Language (SAML),OpenID Connect (OIDC), Kerberos, and header-based authentication; thepredetermined compliance standards comprise at least one of regulatorystandards and customer-defined security requirements, the regulatorystandards including at least one of, Payment Card Industry (PCI) DataSecurity Standard, Health Insurance Portability and Accountability Act(HIPAA), System and Organization Controls (SOC2) compliance standard,and the use of Transport Layer Security (TLS); and the customer-definedsecurity requirements comprise at least one of, multi-factorauthentication, and a zero-trust security model.
 13. The method of claim6, further comprising transforming the first request from a first formatto a second format, wherein the second format is different than thefirst format and comprises one or more of request headers, responseheaders, request bodies, response bodies, request methods, responsemethods, and cookies.
 14. The method of claim 6, wherein the servercomprises a webserver, the webserver comprising at least one of: anApache server; an IBM HTTP server (IHS); an Oracle HTTP Server (OHS);and a NGINX server.
 15. The method of claim 6, wherein, the responsecomprises a response from the IAM system blocking the first request fromreaching the application, and wherein the first request comprises anunmodified request received from the first user device.
 16. The methodof claim 6, wherein, determining the requirements for applicationauthentication and application authorization comprises: analyzing one ormore of application authentication requirements and applicationauthorization requirements in the identity infrastructure for migrationfrom the IAM system to another IAM system; and the another IAM systemcomprises one or more of: an IAM system utilizing a standard identityprotocol, the standard identity protocol comprising at least one ofOpenID Connect (OIDC), Security Assertion Markup Language (SAML), andWebAuthn; an IAM system supporting multi-factor authentication; and anIAM system that is not supported by a third-party, wherein thethird-party comprises a vendor.
 17. The method of claim 16, wherein themigration from the IAM system to the another IAM system comprises usinga third-party system to pass, from the IAM system to the another IAMsystem, one or more of the: identity dependencies; requirements forapplication authentication and authorization; one or more identityprotocols utilized by the application; one or more identity techniquesutilized by the application; predetermined compliance standards; anduser-defined security requirements.
 18. A non-transientcomputer-readable storage medium having instructions embodied thereon,the instructions being executable by one or more processors to perform amethod for analyzing authentication and authorization requirements in anidentity infrastructure, the method comprising: intercepting, at aserver, a first request to access an application in the identityinfrastructure, wherein the first request is received from a first user'device; transmitting, from the server, one or more of the first requestand a modified version of the first request to the application;intercepting, at the server, a response from the application, based atleast in part on the transmission; displaying, via at least oneinterface, an analysis of one or more of the first request, the modifiedversion of the first request, and the response, wherein the analysiscomprises determining at least one of: requirements for applicationauthentication, requirements for application authorization, one or moreidentity protocols utilized by the application, one or more identitytechniques utilized by the application, whether application meetspredetermined compliance standards, and whether any user-definedsecurity requirements have been implemented; and capturing, by theserver, a second request to access the application, wherein the secondrequest comprises the modified version of the first request and includesone or more identity dependencies received from an identity and accessmanagement (IAM) system; wherein the transmitting comprises transmittingthe second request to the application; and wherein intercepting theresponse comprises intercepting the response from one of the IAM systemor the application.